12/06/23 01:38:40.22
正規表現(Regular Expression)スレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
正規表現 Part9
スレリンク(tech板)
天ぷら等2以降
2:デフォルトの名無しさん
12/06/23 01:40:05.80
◆関連サイト
正規表現メモ
URLリンク(www.kt.rim.or.jp)
Perl正規表現雑技
URLリンク(www.din.or.jp)
Regular Expression(Riue ちゃんの正規表現講座)
URLリンク(www.sixnine.net)
正規表現パズル
URLリンク(www.geocities.jp)
詳説 正規表現
URLリンク(www.oreilly.co.jp)
正規表現プログラミングFAQ
URLリンク(capslockabcjp.kitunebi.com)
JScript 正規表現の概説
URLリンク(msdn.microsoft.com)
.NET Framework 正規表現言語要素
URLリンク(msdn.microsoft.com)
【 初心者 】 正規表現 【 入門 】
URLリンク(funcchan.blog16.fc2.com)
3:デフォルトの名無しさん
12/06/23 01:40:50.29
◆関連スレ
[UNIX板] 正規表現
スレリンク(unix板)
[WebProg] 正規表現道場
スレリンク(php板)
◆前スレ
[1] スレリンク(tech板)
[2] スレリンク(tech板)
[3] スレリンク(tech板)
[4] スレリンク(tech板)
[5] スレリンク(tech板)
[6] スレリンク(tech板)
[7] スレリンク(tech板)
[8] スレリンク(tech板)
[9] スレリンク(tech板)
4:デフォルトの名無しさん
12/06/23 01:43:14.23
スルーされにくい質問のテンプレと例
●正規表現の使用環境
Java1.5
●検索か置換か?
検索
●説明
各行の1番目のAまでを検索したい
●対象データ
ABCA
BCAA
CABA
●希望する結果
ABCA
^
BCAA
^^^
CABA
^^
※ ^ はアンダーラインだそうな ^^;
5:デフォルトの名無しさん
12/06/23 01:43:44.50
早すぎワロタ
6:デフォルトの名無しさん
12/06/23 03:33:17.28
粘着が飽きるまで放置しとけばいいのに
7:デフォルトの名無しさん
12/06/23 11:38:03.13
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
8:デフォルトの名無しさん
12/06/23 14:13:09.61
「正規表現が進化しない」ってなかなか斬新な表現だな。
「整数が進化しない」と言ってMSゴシック全角数字の汚さをdisるようなもんか
9:デフォルトの名無しさん
12/06/23 15:12:58.81
正規表現ってパッと見じゃあ理解できない魔法の記号だからな。
10:デフォルトの名無しさん
12/06/23 17:16:49.40
おれもそれを痛感する。なるべく正規表現つかいたくない
11:デフォルトの名無しさん
12/06/23 17:34:40.59
逆にぱっと見てだいたい何やってるかわかるのが正規表現だよ。
正確に理解するには罠がたくさんあるけどな。
12:デフォルトの名無しさん
12/06/23 18:04:03.08
正規表現を理解できないのに、プログラミング言語が理解できるはずがない。
本人がそう思ってるとしたら、理解したつもり、ってだけだ。
13:デフォルトの名無しさん
12/06/23 18:14:44.85
,一-、
/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ < んなーこたーない
´∀`/ \__________
__/|Y/\
Ё|__ | / |
| У |
14:デフォルトの名無しさん
12/06/23 18:16:35.42
1行にかこうとするのが不自然だ。どの部分で失敗したかわかりにくい
15:デフォルトの名無しさん
12/06/23 18:41:58.15
>>1乙
16:デフォルトの名無しさん
12/06/23 20:53:03.91
$url の末尾に「/(スラッシュ)」が入っている場合と、入っていない場合があります。
入っている場合には自動でそのスラッシュをPHPの正規表現を使用して除去する為に
下記コードを書いたのですがエラーが出ます。
どこに問題があるのでしょうか?
//$url = "URLリンク(unnko.com)";
$url = "URLリンク(unnko.com)"; //←この場合に末尾の / を除去したい
$url = preg_replace("/^(.+?)[/]$/","\\1",$url);
Warning (2): preg_replace() [function.preg-replace]: Unknown modifier ']'
17:デフォルトの名無しさん
12/06/23 21:09:17.95
つ "#^(.+?)[/]$#"
URLリンク(www.php.net)
18:デフォルトの名無しさん
12/06/23 21:23:01.79
>>17
ありがとうございました。
因みに、 \\1 の部分はいつも決まり文句で書いているのですが
正直あまり意味が分かりません。
これって何を意味してるのでしょうか?
そもそも、>>16で記述したコードの場合
抽出された結果は、左辺( $url )に代入される為
\\1 なんてそもそもいらない気がしております。
19:デフォルトの名無しさん
12/06/23 21:26:54.74
マニュアル読め。
20:uy
12/06/23 23:00:10.02
教えてやろうと思ったけどやめた
苦しめ
時間を無駄にしろ
俺からレスがもらえたら削減できたはずの時間
無駄に悩め
21:uy
12/06/23 23:16:07.25
a = "URLリンク(www.google.co.jp)"
a.sub!(/\/$/,"")
p a
正規表現て初心者が書くからカオスになるんだろうな
>$url = preg_replace("/^(.+?)[/]$/","\\1",$url);
バカかこれ
22:デフォルトの名無しさん
12/06/24 19:21:57.40
\\1
これってどういう意味?
23:uy
12/06/24 20:35:56.27
後方参照だって教えただろ初心者はまじでしね
p "aaabbbccc".sub(/(bbb)/ , '__\\1__')
# ↓
#
# "aaa__bbb__ccc"
24:デフォルトの名無しさん
12/06/24 20:56:13.56
>>23
thank you .
by the way i saw you at prgramer's board, you know?
25:uy
12/06/24 23:55:43.66
いいえ
教えてないのに「教えただろ」
とかいってくる奴の真似をしてみただけ
26:デフォルトの名無しさん
12/06/25 08:00:30.81
教えてください。複数行からのある文字列を含んだ
行の検索の記述方法です
●正規表現の使用環境
Java7
●検索か置換か?
検索
●説明
複数ある文字行からの検索で
一行中に[A]and[C]を含む行を抽出する方法
一行中に[K]or[S]を含む行を抽出する方法
●対象データ
ABCDEFG
HIJKLMN
OPQRSTU
●希望する結果
ABCDEFG (A and C)
HIJKLMN と OPQRSTU (K or S)
27:デフォルトの名無しさん
12/06/25 08:47:02.57
(.*A.*C.*|.*C.*A.*)
([KS]+)
28:デフォルトの名無しさん
12/06/25 09:06:15.79
>>27
うあ!早々にありがとうございます。
あまえついでに検索対象が「単語」になった場合はどうしたら良いでしょうか?
●正規表現の使用環境
Java7
●検索か置換か?
検索
●説明
複数ある文字行からの検索で【単語A】【単語B】をand/or検出
●対象データ
むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)浦島太郎はかめにのって海に出て行きました(改行)
そうすると、おじいさんは「わたしは小さなつづらでよい」といいました(改行)
●希望する結果
「おじいさん」and「おばあさん」
むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)
「おじいさん」or 「おばあさん」
むかしむかし、おじいさんは山に芝刈りに、おばあさんは川に洗濯に行きました(改行)そうすると、おじいさんは「わたしは小さなつづらでよい」といいました(改行)
29:デフォルトの名無しさん
12/06/25 09:08:42.34
条件後出し禁止
30:デフォルトの名無しさん
12/06/25 09:11:08.50
(.*おじいさん.*おばあさん.*|.*おばあさん.*おじいさん.*)
(おじいさん|おばあさん)
31:デフォルトの名無しさん
12/06/25 10:14:00.52
条件が複数になったときとかを考えると、
プログラム側でどんどん分割しちゃった方が実用的な気がする。
32:デフォルトの名無しさん
12/06/25 10:41:47.04
>>29
ごめんなさい
33:デフォルトの名無しさん
12/06/25 10:42:48.54
>>30
ありがとうございました。商品の名前の正式名と略名の両方で書かれた
論文があったので、助かりました
34:デフォルトの名無しさん
12/06/25 11:43:15.33
このスレいつからこんなレベル低くなったんだ
35:デフォルトの名無しさん
12/06/25 11:50:44.25
性器表現とか言い始めたあたりから
36:デフォルトの名無しさん
12/06/25 12:28:40.41
べつにええやん
# 商品名の書かれた論文をJavaで検索ってのがちょっと気になる。
37:デフォルトの名無しさん
12/06/25 12:31:08.18
好きとか嫌いとか言い出したあたりから
38:デフォルトの名無しさん
12/06/26 17:37:34.04
指定されたファイルパスの拡張子を正規表現で変更しようとしています。
下記の場合、具体的には *.csv という拡張子を *.txt に置き換える為に
正規表現を書いたところ
string basic_path = @"C:\Users\YamadaTarou\Desktop\20120626_155147.csv";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@".*\.(?)");
string replaced_path = r.Replace(basic_path, "txt");
parsing ".*\.(?)" - Quantifier {x,y} following nothing.
というエラーが出ちゃいます。 どこに問題があるのでしょうか?
39:デフォルトの名無しさん
12/06/26 18:09:02.07
?は{0,1}
?の前に正規表現がない。
?が何もないものの後ろにある = ? following nothing. = Q. {0,1} following nothing.
?の代わりにcsvじゃまずいのか?
40:デフォルトの名無しさん
12/06/26 18:14:12.19
>>39
指定される元のファイルが
CSV だったり TSV である可能性がある為、決め打ちが出来ません。
41:デフォルトの名無しさん
12/06/26 18:34:15.41
URLリンク(msdn.microsoft.com)
ここの「省略可能な量指定子または代替構成体によるバックトラッキング」に書いてあるみたいに
.NETの正規表現エンジンってアトミック後読みとかしないと.*で全部調べるわけ?
.*?eとかなってたら普通はeを探すと思うんだけど
42:デフォルトの名無しさん
12/06/26 18:37:08.80
つ ".*¥.(.sv)$"
つ ".*¥.(...)$"
つ ".*¥.([^.]*)$"
43:デフォルトの名無しさん
12/06/26 19:03:53.51
^((?>[^.]+)\.)+(?>[^.]+)$
ぐらいにしないと無駄なバックトラックが入ってしまい効率が落ちるということになるのか・・・?
効率良く処理するには後ろから読んでいって欲しいところだがそんな制御は無理か・・・?
正規表現ってこんな訳のわからないものだったのか・・・?
44:デフォルトの名無しさん
12/06/26 19:22:18.64
その方がよっぽど訳わからん
45:デフォルトの名無しさん
12/06/26 19:26:56.75
ふくろう本を読め
46:デフォルトの名無しさん
12/06/26 19:30:16.68
まあ適当でいいか
O(n^2)とかにならなければ気にすることないよな
47:デフォルトの名無しさん
12/06/26 21:27:20.79
>>42
(^^)ありがとうございます。
早速、下記コードを記述したところ
string basic_path = @"C:\Users\YamadaTarou\Desktop\20120626_155147.csv";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@".*\.([^.]*)");
string replaced_path = r.Replace(basic_path, "txt");
replaced_path には、 "C:\Users\YamadaTarou\Desktop\20120626_155147.txt"
が入る事を期待していたのですが
replaced_path には、 "txt だけ入ります。
うーん。あと一歩。
48:デフォルトの名無しさん
12/06/26 21:36:50.81
.*消せ
49:デフォルトの名無しさん
12/06/26 21:47:08.01
>>48
サンキュー
string basic_path = @"C:\Users\YamadaTarou\Desktop\20120626_155147.csv";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"\.([^.]*)");
string replaced_path = r.Replace(basic_path, ".txt");
で出来ました。
50:デフォルトの名無しさん
12/06/27 13:19:26.92
5000円出してふくろう本買ってきたわ
高すぎるだろ・・・
51:デフォルトの名無しさん
12/06/27 14:05:27.11
お前の脳みそに
皺が1本増えてよかったじゃないか。
52:デフォルトの名無しさん
12/06/27 17:00:40.16
大学帽かぶってるやつか?
53:デフォルトの名無しさん
12/06/27 17:06:52.63
フクロウ博士ではないな
54:デフォルトの名無しさん
12/06/27 17:27:21.16
たま ぶくろう
55:デフォルトの名無しさん
12/06/27 17:42:19.23
玉袋寛子っていまなにしてんのかな
56:デフォルトの名無しさん
12/06/27 20:40:42.70
本買って勉強するのもいいと思うけど、
結局は実際の業務でgrep検索や正規表現で得たい結果を学んでいく方がいいと思う。
57:デフォルトの名無しさん
12/06/27 21:14:27.90
実地独学だけで進むと、変な勘違いや基礎や初歩の欠落を抱えたまま
それに気付かず進んでしまう可能性もあるけどね
58:デフォルトの名無しさん
12/06/27 23:17:21.48
URL文字列から次の事をしたいんですけど、
正規表現がどうもまずいみたいです。
また、ループの中でどう <last-string> でグループ化した値を参照したら良いかわかりません。
ご伝授下さい。
string test = "URLリンク(hogehoge.com)"; //123.pdf をとりたい
//string test = "URLリンク(hogehoge.com)"; 123.html をとりたい
//string test = "URLリンク(hogehoge.com)"; 123.doc をとりたい
//string test = "URLリンク(hogehoge.com)"; ""(空文字) をとりたい
//string test = "URLリンク(hogehoge.com)"; ""(空文字) をとりたい
Regex regex = new System.Text.RegularExpressions.Regex(@"^.*\/(?<last-string>[a-zA-Z0-9.].*)$");
MatchCollection matchCol = regex.Matches(test);
for(int i = 0; i < matchCol.Count; i++)
{
//よくわからなん。
//string gotten_string = matchCol[i].Value;
}
59:デフォルトの名無しさん
12/06/28 01:22:43.03
細かくは試してないけど ^(.*//.*/.*)([^/]*)$ とかで行けそうな予感。
各言語/ライブラリの使い方については知らんけど。
60:デフォルトの名無しさん
12/06/28 01:43:03.32
あ、だめだ。ごめん>59は忘れて
61:デフォルトの名無しさん
12/06/28 03:31:36.63
var pattern = "URLリンク(.*)(.*)$"
var hostOnly = "URLリンク([^)"
patternにマッチしたらOKで
マッチせずhostOnlyにマッチしたら空文字列でいいんじゃない
62:デフォルトの名無しさん
12/06/28 09:24:52.19
>>58
string test = "URLリンク(hogehoge.com)";
Regex regex = new System.Text.RegularExpressions.Regex(@"^.*\/(?<last_string>[a-zA-Z0-9]+\..*)$");
MatchCollection matchCol = regex.Matches(test);
foreach (Match m in matchCol)
{
GroupCollection groups = m.Groups;
var gotten_string = groups[1];
}
まず正規表現の文字列見直せ。 [a-zA-Z0-9.].* だと 英数字か.で始まる文字列。
あと、どこ見たのか知らんけど、これしきの要件でなんで使い方も分からんグループ化など使うんだ。
URLリンク(msdn.microsoft.com)(v=vs.100).aspx みなおせ。 名前に-を入れるな 違う意味だ。
63:デフォルトの名無しさん
12/06/28 09:38:30.70
var gotten_string = test.Substring(test.LastIndexOf('/')+1);
これでいいんじゃねーの?
64:デフォルトの名無しさん
12/06/28 15:36:00.82
ふくろう本読んだらいきなり完璧な正規表現書けるようになったわ
1日で必要なとこ全部読めたし超読みやすい
神すぎる
65:デフォルトの名無しさん
12/06/28 16:37:41.17
>>63
全部正規表現でやりたいのですたい。
66:デフォルトの名無しさん
12/06/28 17:08:32.69
シンプルな正規表現は最適化が効いて高速に動く
プログラムで組み立てたほうが分かりやすい
なんでも正規表現で書こうとするのは愚か
67:デフォルトの名無しさん
12/06/28 17:23:55.69
プログラムで組み立てた方が分かりやすいのは確か。
だけど正規表現を華麗に使いこなせる様になりたいの。
68:デフォルトの名無しさん
12/06/28 21:17:36.02
>>62
ありがとうございます。
流石にこの程度の物に対して正規表現を使うのは大げさな気がしました。
69:デフォルトの名無しさん
12/06/28 21:23:36.36
>>63
流石になんでもかんでも正規表現をやるのはどうかと思いました。
その様にプログラムを今回は使う事にします。
70:デフォルトの名無しさん
12/06/29 10:06:32.67
>>66-67
要求としてはどっちも正しいよな、ほんと。
71:デフォルトの名無しさん
12/07/02 19:40:41.37
数値比較を正規表現だけでやることになって、たった4桁なのに泣きそう。
72:デフォルトの名無しさん
12/07/02 19:42:21.41
簡単じゃねーか
73:デフォルトの名無しさん
12/07/02 19:51:37.98
あら、そうなのか。調べても分からんかった。
74:デフォルトの名無しさん
12/07/02 20:03:30.29
せめてググレよw
75:デフォルトの名無しさん
12/07/02 20:12:37.16
正規表現だけで、二つの並んだ四桁の数字の大小比較をするのは、
プログラム生成するしかないような巨大な正規表現になる。
76:71=73
12/07/02 20:42:11.85
>>74
ググったんだけど、\d+とか[0-9]+とかしか出てこなくて。
>>75
今回の為だけに、正規表現を生成するプログラムを作ろうかとまで思ったw
77:デフォルトの名無しさん
12/07/02 22:56:17.99
^.+(?=[wWwW][ 。]*(?:<br>|$))
2chブラウザで芝をNGする正規表現なのですが、いくつか分からない場所があります
?=や?:はどういった意味なのでしょうか?
調べてみたのですが、うまく出てきませんでした
また、^.+や.+$で挟む必要はあるのでしょうか?
書いてあるほうが重畳かと思いますが、書いてない場合も見受けられます
どちらでもいいのでしょうか?
また、これでは「そうかwwwwよくわかったわ」のように真ん中に芝が入っているレスはNGできません
ワールドワイドウェブは保持しつつも芝を完全にNGする書き方はないでしょうか?
よろしくお願いします。
78:デフォルトの名無しさん
12/07/02 23:18:56.96
>>1
79:デフォルトの名無しさん
12/07/02 23:40:18.28
このスレはテキストエディタでの正規表現を質問してもいいですか?
80:デフォルトの名無しさん
12/07/02 23:52:46.01
どうぞどうぞ
81:デフォルトの名無しさん
12/07/02 23:52:46.84
なんでダメだと思ったの?
スレタイを10回嫁
82:デフォルトの名無しさん
12/07/02 23:59:20.48
>>81
プログラム板なのでプログラム関係の質問だけしかしてはいけないのかと思いまして一応確認を取らさせていただきました。
では失礼します。
テキストエディタ「Apsaly」を使用しています。
test1やtest2などの文字列を検索して、
test6、test7のように決めた分(今は+5)だけ数字の値を増やしながら置換することは出来ますか?
83:デフォルトの名無しさん
12/07/03 00:07:41.25
わろた
自分でテキストエディタ作ってんじゃないのか
84:デフォルトの名無しさん
12/07/03 00:12:38.98
ごめんなさい
やっぱり駄目でしたか
85:デフォルトの名無しさん
12/07/03 00:14:23.36
痴漢は正規表現の仕事じゃねーし。
MikoScript書け。
86:デフォルトの名無しさん
12/07/03 00:15:45.12
痴漢は性器の・・・
87:デフォルトの名無しさん
12/07/03 00:18:34.42
>>85
すいません
痴漢に多くを求めてしまいました
MikoScriptなんてのがあったんですね
これなら何とかできそうです
ありがとうございました
88:uy
12/07/04 03:56:37.07
>>81
>>84
俺はこの流れのほうがワロタだわ
>プログラム板なのでプログラム関係の質問だけしかしてはいけないのかと思いまして一応確認を取らさせていただきました。
誰が決めたの?
つうか答えられる奴が少ないから答えが返ってこないだけ
89:デフォルトの名無しさん
12/07/04 04:06:01.96
どう考えてもスレ違い
90:uy
12/07/04 10:57:08.19
スレ違いつうかApsaly用の質問スレなんてないし
IDE + テキストエディタ系の専用質問スレがあったほうがいいんじゃね
91:デフォルトの名無しさん
12/07/04 23:16:05.48
Apsalyは公式サイトに掲示板ないのに、ソフトウェア板のスレまで閑古鳥が鳴いてるという不人気エディタなのに、
ム板で普通に会話が成立しているのに驚いた
もしかしてMikoScriptって意外と使ってる人多いの?
92:デフォルトの名無しさん
12/07/05 00:33:13.30
/A(?:(?(R)b|c)|(?R))+/
これって何にヒットするんです?
AbとかAcなんかじゃヒットしない
ホントこれだけが正規表現の中で動きが全くわからぬ
93:デフォルトの名無しさん
12/07/05 11:56:16.57
PCREだと
(?(R)b|c) が 再帰式中ではb そうでなければ c なので
Ac+ とかAAbとかが該当するんだけど環境は?
94:デフォルトの名無しさん
12/07/06 16:54:42.65
(?(R)って何?
PCREってほんとにPerl互換なの? そんな機能知らないわよ
95:デフォルトの名無しさん
12/07/06 17:17:58.74
>>94
URLリンク(perldoc.jp)
> (?(condition)yes-pattern|no-pattern)
> (?(condition)yes-pattern)
> (condition) はかっこでくるまれた数値(対応するかっこ対が マッチングしたときに有効)、
> 先読み/後読み/ゼロ幅で評価される言明、角かっこ もしくはシングルクォートで
> くるまれた名前(その名前のグループが マッチングしたときに有効)、
> 特殊なシンボル (R) (再帰または eval 内で 評価されているときに真)のいずれかです。
> (R)
> 式が再帰の中で評価されているかどうかを調べます。
96:デフォルトの名無しさん
12/07/06 18:06:10.18
なるほど・・・意味が分からん
97:デフォルトの名無しさん
12/07/14 20:33:20.42
最後に○○がつくけどマッチング文字列に含めないってどうすればいいんでしったっけ
98:デフォルトの名無しさん
12/07/14 20:55:46.57
先読みのことかな?
あいう○○
う(?=○○)
後ろに○○がつく「う」にマッチ
99:デフォルトの名無しさん
12/07/15 01:10:45.88
Aは(.+)
(.+)はB
という2つの文から
「AはB」
という文を作るにはどうすればいいですか?
100:デフォルトの名無しさん
12/07/15 01:16:45.18
どゆこと?
101:デフォルトの名無しさん
12/07/15 04:08:18.43
>>98
ありがとうございます。
102:デフォルトの名無しさん
12/07/19 19:06:50.67
正規表現での置き換え文字列をランダム化する方法はありませんか?
例
検索文字列 半角スペースで挟まれたアルファベット4文字
( )(\w{1})(\w{1})(\w{1})(\w{1})( )
置き換え結果 以下から ランダムでどれかを出力
\1●●\3\4\5
\1●\2●\4\5
\1●\2\3●\5
\1\2●●\4\5
\1\2●\3●\5
\1\2\3●●\5
分かる方いましたらお願いします。
サクラエディタつかってますが
103:デフォルトの名無しさん
12/07/19 19:23:09.77
普通にコード書けばええんや?
104:デフォルトの名無しさん
12/07/19 21:47:09.24
その正規表現は一体
105:デフォルトの名無しさん
12/07/20 18:43:47.12
>>102
マクロでがんばれ
ついでに
サンプルだからそうしてるのかも知れんけど
1文字ずつ指定するときは量指定子いらないよ
106:102
12/07/21 00:37:12.97
>>103-105
返信ありがとうございます。
色々コードとか、何か別のプログラムとかの組み合わせで可能なのかどうか調べてみましたが、
プログラムの知識自体が無いのでやっぱり難しいのでしょうか
マクロについて、サクラエディタのmacファイルを直接編集で何とかできないかと試して見ます
1つの文書で数千箇所置き換え箇所があるのですが、マクロで何かよい書き方とかあるのでしょうか?
とりあえず色々調べてみます。
107:デフォルトの名無しさん
12/07/21 17:52:39.23
for(int a = 1; a < 5; ++a)
for(int b = 1; b < 5; ++b)
if(a != b){
int k = 0;
for(int i = 0; i < 6; ++i){
if(a == i || b == i) print(' ');
else{ print(str[k]); ++k; }
}
print('\n');
}
108:デフォルトの名無しさん
12/07/21 17:55:19.04
ああちがうか
for(int i = 0; i < 6; ++i){
if(a == i){ print(' '); }
else if(b == i){ print(' '); ++k; }
else{ print(str[k]); ++k; }
}
こうなのか
109:デフォルトの名無しさん
12/07/21 18:03:36.25
いやランダムに一個選ぶだけか
//a,bは空白にしたいインデックス。str[b]はスキップされ戻り値に含まれない
string M(int a, int b, char[] str)
{
if(a == b) throw new Exception();
List<char> result = new List<char>();
for(int i = 0; i < str.Length + 1; ++i){
if(a == i){ result.Add(' '); }
else if(b == i){ result.Add(' '); ++k; }
else{ result.Add(str[k]); ++k; }
}
return new string(result);
}
110:デフォルトの名無しさん
12/07/21 20:32:44.62
'([\x8E\xA1-\xFE][\xA1-\xFE])' で、euc の2バイト文字にマッチするかと思いますが、
このうち、「×」(\xA1DF)のみマッチさせたくないのですが、
どのように書けばよいでしょうか?
111:デフォルトの名無しさん
12/07/22 14:32:08.52
URLリンク(homepage3.nifty.com)
112:デフォルトの名無しさん
12/07/22 17:22:52.61
(A|B|C|D)と[ABCD]は
全く同じ意味ということでいいんでしょうか?
イマイチ違いが分かりません
使い分けとかあるんでしょうか
113:デフォルトの名無しさん
12/07/22 17:37:23.71
>>112
それ単独で見れば同じように動く、だろうね。
速度とか効率とかの違いはあるかもしれないけど、そのへんは詳しい諸兄に任せる。
114:デフォルトの名無しさん
12/07/22 17:43:07.64
>>112
俺は、単一文字なら [ABCD]、複数文字列なら (ABC|DEF|GHI|JKL)
115:デフォルトの名無しさん
12/07/22 18:03:40.37
>>112
[ABCD]はシンタックスシュガーです。
意味的にはなくても問題無いです。
>>113
効率どっちがいいかは実装依存ですね。
状態遷移マシン使うタイプの実装なら差は出ないけど。
116:デフォルトの名無しさん
12/07/22 18:24:01.31
ふくろう本には(A|B|C|D)だと遅くなる環境もあるって書いてあったよ
できるだけ[ABCD]使ったほうがいいと思う
117:デフォルトの名無しさん
12/07/22 18:42:07.57
それはASCII文字の話じゃないの?
サロゲートペアを考えると[ABCD]なんて内部的にも実質無いも同然。
118:デフォルトの名無しさん
12/07/22 20:21:15.68
サロゲートペアかどうかって何の関係が?UTF-8なら3バイトまでに収まるか4バイトかの違いに過ぎない。
マルチバイトに対応したエンジンなら1文字は1文字だし。
119:デフォルトの名無しさん
12/07/22 20:47:22.57
UTF-16を内部表現に利用していると、
[ABCD]は、例えばBがサロゲートペアだと、(A|BB'|C|D)と同じになる。
サロゲートペアなくても内部UTF-8のエンジンは同等の変換が必要。
120:デフォルトの名無しさん
12/07/22 20:59:13.92
えー
121:デフォルトの名無しさん
12/07/22 21:18:43.74
同じになるとは限らんよ。バイト単位で比較するかコードユニット単位かコードポイント単位か、まさに実装次第。
しかしUTF-16なエンジンって少ない気がするんだが。
122:デフォルトの名無しさん
12/07/22 21:28:30.44
えっ
Javaや.netのは
123:デフォルトの名無しさん
12/07/22 21:55:09.72
boost::u32regexはサロゲをまともに処理できる。
unicode扱いはICU任せで32bit幅wchar使ってるんで。
PCREはカオスすぎてわけがわからん。
内部はバイト列でUTF16とUTF8のモードがifdefで錯綜してて。
124:デフォルトの名無しさん
12/07/22 22:00:51.71
>>122
すまん、全く眼中になかったwww
125:デフォルトの名無しさん
12/07/22 22:20:14.16
>>110
> '([\x8E\xA1-\xFE][\xA1-\xFE])' で、euc の2バイト文字にマッチするかと思いますが、
> このうち、「×」(\xA1DF)のみマッチさせたくないのですが、
> どのように書けばよいでしょうか?
鬼車や鬼雲を正規表現エンジンとするRuby1.9系やサクラエディタ(要bregonig.dll)なら
[\x8E\xA1-\xFE\xA1-\xFE&&[^×]]
でどうでしょうか?
#文字クラス内で積演算の&&が使えないよう環境なら、否定先読みを併用すればできるのかな?
URLリンク(www.geocities.jp)
URLリンク(github.com)
6. 文字集合
^... 否定 (最低優先度演算子)
x-y 範囲 (xからyまで)
[...] 集合 (文字集合内文字集合)
..&&.. 積演算 (^の次に優先度が低い演算子)
例. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w]
126:デフォルトの名無しさん
12/07/23 12:44:45.94
今時マルチバイト文字を文字単位で扱えない環境なんて嫌だな
あとEUCJPは3バイトまであるし
127:デフォルトの名無しさん
12/07/23 13:03:05.65
嫌な環境なら使わなければ良いだけなのに。
何言ってんのこいつ。
128:デフォルトの名無しさん
12/07/23 16:12:33.90
>>127
好き嫌いで何とかなる類のものでも無いだろw
真っ先に変換しとけ、というなら分かるが。
129:デフォルトの名無しさん
12/07/23 17:08:30.35
いや、嫌だって思うのは自由だし、普通の感情だろ。
130:デフォルトの名無しさん
12/07/23 17:10:02.76
本当に今欲しい物 それはその答えですか?
131:デフォルトの名無しさん
12/07/23 18:00:50.91
>>129
好き嫌いの感情自体は誰も否定してないんだ
132:デフォルトの名無しさん
12/07/23 19:08:36.13
人が嫌がるものだからこそ金になるんだろ。
133:デフォルトの名無しさん
12/07/23 21:09:24.31
Javaも.NETも2バイト以外の文字は使えない設計だよね
134:デフォルトの名無しさん
12/07/23 21:22:58.49
Python は安心
135:デフォルトの名無しさん
12/07/23 21:27:33.74
えっ
.NETでも普通にサロゲートペア文字検索できるけど
136:デフォルトの名無しさん
12/07/23 21:43:30.89
> 2バイト以外の文字は使えない
そもそも何を言わんとしているかわからん。
137:デフォルトの名無しさん
12/07/23 21:47:18.68
馬鹿には無理
138:デフォルトの名無しさん
12/08/03 21:50:53.37
javascriptで下記のような置換を行いたいのですが、どのようにすれば良いでしょうか?
hogehoge1
<img src="1.png">
<img src="2.png">
<img src="3.png">
<img src="4.png">
<img src="5.png">
hogehoge2
↓
hogehoge1
<img src="1.png">
hogehoge2
おながいします
おながいします
139:138
12/08/03 22:20:30.79
自己解決しましたすんません
140:デフォルトの名無しさん
12/08/04 07:53:41.34
>>138
どういう置換だったのだろうか。
1) hogehoge1 と hogehoge2 の間の先頭の一行のみ残し、他の行は削除。
2) hogehogeN と hogehogeN+1 の間で N.png を含む行だけ残し、他の行は削除。
くらいの可能性があると思うが。第一感は2)だが、hogehogeN+1以下をどうするか書くべき。
1)の解釈の方が無難。
141:デフォルトの名無しさん
12/08/07 00:04:48.96
●正規表現の使用環境
C#
●検索か置換か?
検索
●説明
●▼■ の部分をマッチさせたい
●対象データ
ほげほげ●▼■ほげおわり
ほげほげ●▼■ほげここまで
●希望する結果
●▼■
ほげほげ(?<1>.+?)ほげおわり|ほげここまで
のように書きましたがだめみたいです。
これだと
ほげほげ(?<1>.+?)ほげおわり もしくは
ほげここまで
という風になってしまうのでしょうか?
ほげおわり か ほげここまで のどちらかという書き方を教えてほしいです。
142:デフォルトの名無しさん
12/08/07 00:52:15.90
C#のソースコードで書いてよければ
「(ほげほげ)(.+?)(ほげおわり|ほげここまで)」で検索して、
match.group(1)で取るだけで足りるのでは?
group(1)でグループを取り出してないのと、「|」の優先順位が後回しなのが原因だと思う
143:デフォルトの名無しさん
12/08/07 01:42:57.32
ありがとうございます。
その方法でできました。
グループの指定の仕方を勘違いしていたようです。
144:デフォルトの名無しさん
12/08/07 11:23:49.88
javascript処理です。
<input type="image" name="" src="/printer.gif" value="PRINT"
onclick="myFunc('/print.do','100024516675','05','100051319097','PRINT','4756615037424747126');return false;">
のタグから,onclickの内容を文字列で取得した後に,引数を正規表現で取得しようとしてます。
func = "myFunc('/print.do','24516675','05','1051319097','PRINT','4756615037424747126');return false;"
ret = func.match(/'[^']*'/g);
とすると前後のクウォーテーションも混じってしまうので,現状はval[0] = ret[0].slice(1,-1)のように後処理してます。
これをはじめから正規表現を使って後処理なしにする正規表現が思いつきません(あるとは思うのですが)
要するに、二つの「'」に囲まれた文字列に複数回マッチするが「'」そのものは含まれない。というものです。
よろしくお願いします。
145:デフォルトの名無しさん
12/08/07 11:55:03.96
これもグループ化の出番だと思う
ret = func.match(/'([^']*)'/g);
と取り出したい部分をカッコでくくって
ret[i].$1;
と$1=1番目のグループマッチ文字列内容を取り出す
※ブラウザ互換は自信がないので確認されたし。IEやFirefoxは大丈夫なはずだが
146:デフォルトの名無しさん
12/08/07 13:29:23.05
>>145
ありがとうございます。残念ながらSafari環境ではダメでした。
var re = /'([^']*)'/g;
var match;
while ((match = re.exec(func))) { alert(match[0] + "\n" + match[1]); }
でできるようです。
でも,,,sliceから変更するメリットが,,,
147:デフォルトの名無しさん
12/08/07 16:03:26.73
'を外す表現があるような気もするけど、
多分 slice(1,-1)より遅いと思う。
148:デフォルトの名無しさん
12/08/07 16:58:08.04
>>138,>>140
二度と来るなhoge厨
149:デフォルトの名無しさん
12/08/07 18:19:28.22
javascriptはjQueryを使った方が可読性が上がって好き。
150:デフォルトの名無しさん
12/08/08 00:43:27.27
echo "gr|y" |grep -e "gr[a|e]"
> gr|y
gray、またはgreyだけでなく、
なんで|記号まで対象になってしまうでしょう?
151:150
12/08/08 00:45:43.03
echo "gr|y" |grep -e "gr[a|e]y"
最後、yがぬけてた。
|記号は普通の文字列として扱われてしまっているのでしょうか・・
152:デフォルトの名無しさん
12/08/08 00:56:45.81
それをやるなら "gr[ae]y" か "gr(a|e)y" だろ
153:デフォルトの名無しさん
12/08/08 02:44:20.82
韓国開発研究院(KDI)が5日に発表した報告書によると、統計庁の2011年の家計金融調査を分析した
結果、借金を抱える世帯の33%が赤字状態で、7%は負債が資産を上回っていることが分かった。
韓国の世帯数は1757万世帯(2010年現在)で、うち借金がある世帯が63%を占めることから、借金があり、
かつ赤字状態の世帯は365万世帯に達することになる。また、負債が資産よりも多く、かつ赤字状態の世帯は
全体の3.3%(36万世帯)だった。特に債務返済能力は低所得層ほど低いことが分かった。
漢陽大のハ・ジュンギョン教授は「不動産市場の低迷で資産の売却が難しく、借金があり赤字状態の世帯が
さらに借金を重ねる悪循環に陥る可能性がある」と懸念を示した。
キム・テグン記者
朝鮮日報/朝鮮日報日本語版: 2012/08/06 09:08
URLリンク(www.chosunonline.com)
154:デフォルトの名無しさん
12/08/08 11:00:19.07
とりあえずperlで
<div class="test">
<div class="block">
だkfj;ぇkたj;
わえltかj;うぇlk
あうぇktじゃ;うぇkl
</div>
<pre>
</pre>
</div>
っていうhtmlのコードがあるとして、
<div class="test">から一番下の</div>までの中にあるデータを取得したいんですが、
これにマッチする正規表現ってありますか?
この中にも</div>がいくつかあるので、最後の</div>にマッチする前に何回かひっかかっちゃってうまくいかないんです
正規表現のプロの皆さんよろしくお願いします。
155:デフォルトの名無しさん
12/08/08 11:03:10.34
マッチの終わりに</pre></div>を指定すれば・・・
156:デフォルトの名無しさん
12/08/08 11:13:33.16
正しいタグの組じゃなくて最後の</div>でいいなら 最長一致の
<div class="test">.*</div> でいいわけで
そうでないなら html解析するべき
157:デフォルトの名無しさん
12/08/08 11:14:43.84
あ、すいません。
最後の</div>のまえに必ず</pre>があるとは限らないんです。
やっぱ最後の</div>の直前か直後に他にはない決まった文字とかがないと無理っすよね~
158:デフォルトの名無しさん
12/08/08 11:15:43.77
>>156
あ、すいません。
最後の</div>
の後ろにも</div>とか
色んな文字が並んでます。
やっぱ>>157
で言ったとおり無理ですよね~
159:デフォルトの名無しさん
12/08/08 12:19:38.47
>>157
入れ子になった完全な<div> </div>のなかにあるデータというと
それはタグ(例えば<div>)を含んで構わないということかな。
160:デフォルトの名無しさん
12/08/08 12:24:19.36
>>159
はい大丈夫です
161:デフォルトの名無しさん
12/08/08 12:45:43.22
<div(?(R)[^>]*| class="test")>.*?(?R).*?<\/div>
PCRE だとこんな感じ?
162:デフォルトの名無しさん
12/08/08 12:52:30.80
スレチだけど素直にxpath。
$ xmlstarlet sel -t -m "//div[@class='test']/*" -c . -n
163:デフォルトの名無しさん
12/08/08 12:54:38.43
やっぱりperlじゃなくてPHPでお願いします。
正規表現が無理ならPHPの関数使ってでもいいです
164:デフォルトの名無しさん
12/08/08 13:13:13.15
>>161
まんまだと駄目で
(?R)*にしても <div class="block">の閉じで終わってしまう。
165:デフォルトの名無しさん
12/08/08 16:00:17.05
PHPでお願いしますって言ってた質問もういいです。
preg_matchを繰り返せばなんとかとりたい部分だけ取れました。
ご迷惑おかけしました。
166:デフォルトの名無しさん
12/08/09 03:48:44.49
性器表現
167:uy
12/08/10 18:07:28.45
rubyの正規表現の質問です
連続して10回以上...無限にマッチさせる構文ってないですか?
/6{9}6+/
いまはこんな事をやっていますがもう少しスマートな書き方あれば教えて欲しいんですけど
168:デフォルトの名無しさん
12/08/10 18:34:04.25
>>167
/6{10,}/
169:uy
12/08/10 18:36:37.17
>>168
ありがとうございます
170:デフォルトの名無しさん
12/08/10 18:38:34.97
改行を含むながー文字列で先頭にタブ文字が入ってるやつがあります。
このタブだけにマッチするには、
^\t
でいいんでしょうか?
^\t$
こうかと思ったんですがこれだとマッチしませんでした。
171:デフォルトの名無しさん
12/08/10 18:44:36.79
>>170
>改行を含む
172:デフォルトの名無しさん
12/08/10 18:46:38.61
質問しなおします。
改行を含むながーい文字列があります。この文字列の中にはタブ文字も含まれています。
この文字列の一番先頭にタブ文字が紛れ込んでいるやつがあります。
これを除去したいんです。
PHPのpreg_replaceを使うとしたら、
preg_replace("/^\t$/","",$str);
こうですか?
これじゃマッチしませんでした。。
173:デフォルトの名無しさん
12/08/10 19:34:43.94
>>172
それは多分タブ文字しか含まない文字列にのみマッチする。
長いだっのか。ちゃんと書こう。
174:デフォルトの名無しさん
12/08/10 20:55:35.73
文字列の先頭しか必要ない話なのに、文字列が改行含むかどうかが関係するのか?
それとも文字列には複数行が含まれていて、
そのどの行の先頭でも同じ変換をしないといけないわけなのか?
175:デフォルトの名無しさん
12/08/10 21:07:25.04
>>174
それは$strに代入したあなたに聞いて。
あなたの書いた正規表現は文字列の1文字目がタブで、それが文字列の最後の文字だということ。つまり文字列が1文字でかつタブという正規表現。必要ないと言っても、必要としているスクリプトになってるから。
176:デフォルトの名無しさん
12/08/10 21:27:21.32
私は>>174じゃありません
>>174
なんか正規表現の中で文字列の先頭を改行の後とみなすやつがあったので一応書いておきました。
もしそいつにもマッチしたら困るので
>>175
じゃあ最初の文字だけにマッチさせるにはどうしたらいいですか?
とにかく先頭にタブ文字がある文字列をピックアップしたいんです。
あ、じゃあsubstrで一文字取って、調べりゃいいですね。
皆さんありがとうございました。
177:デフォルトの名無しさん
12/08/10 21:32:17.10
正規表現でやりたきゃ$が不要。
しかし正規表現必要ないな。
178:デフォルトの名無しさん
12/08/11 06:43:50.15
>>176
PHPのは知らないけどPerlの正規表現では^は正規表現フラグm(マルチライン)が有効になってると、
^が文字列先頭以外にも改行直後(行頭)にもマッチしてしまうので、
正規表現フラグ関係なく、改行が含まれるかもしれない文字列の先頭のみにマッチさせたい場合は、
\Aを使うべし
179:デフォルトの名無しさん
12/08/11 14:09:27.76
t
180:デフォルトの名無しさん
12/08/11 14:17:57.80
>>178
そういう回答求めてました
ありがとうございました
181:デフォルトの名無しさん
12/08/11 16:22:33.21
全体が10文字以内でaとbとcをこの順番に含むパターンってどうかきますか?
182:デフォルトの名無しさん
12/08/11 16:40:58.70
>>181
プログラムを使えるなら楽なんだが… たぶん、正規表現だけってことだよねぇ
183:デフォルトの名無しさん
12/08/11 16:44:12.55
xxx/abc/dfg/hij
xxx/abc/hij
この二つの文字列にマッチさせるようにするにはどうしたらいいでしょうか?
184:デフォルトの名無しさん
12/08/11 16:50:11.71
>>183
「/abc/」を含む文字列すべて、ならこれでどうでしょうか?
.*/abc/.*
185:デフォルトの名無しさん
12/08/11 16:52:50.83
xxx/abc/(dfg/)?hij で行けそうな
186:デフォルトの名無しさん
12/08/11 17:19:33.04
>>184
>>185
ありがとうございます
187:デフォルトの名無しさん
12/08/11 19:03:41.15
>>181
> 全体が10文字以内でaとbとcをこの順番に含むパターンってどうかきますか?
.*a[^c]*b[^a]*c.* と .{3,10} の肯定先読みか肯定戻り読みを合体させれば、
できるんじゃないかしら?
もっとも「1qabbbcd90」とか「aあbいbc」みたいなaとcに囲まれるbの個数が2個以上はNGで
1個限定ということなら前者の正規表現も更にカスタマイズが必要になるけど
188:デフォルトの名無しさん
12/08/15 05:04:21.31
emacs-lispの正規表現でわからない点があるので教えてください。
Cソースコードの
#define
プリプロセッサにマッチさせるための正規表現で下記が良く使われているのですが
"^\\s-*#\\s-*define"
-
↑のマイナスって意味ってありましたっけ?
URLリンク(www.kt.rim.or.jp)
とかみてもそれらしいのが見つからないのですが・・・
#defineに一致させるためなのであれば
行頭のスペース任意数以上(0~N回)#スペース任意数(0~N)define
なので
"^\\s*#\\s*define"
とかで良いきがするのですが・・
189:デフォルトの名無しさん
12/08/15 07:43:45.93
>>188
もう emacs 使ってないので、はずしてるかもしれないけど
EmacsLispの正規表現「\s」は空白文字類じゃない。
URLリンク(d.hatena.ne.jp)
じゃないの?
190:デフォルトの名無しさん
12/08/15 08:18:54.14
>>189
> >>188
> もう emacs 使ってないので、はずしてるかもしれないけど
>
> EmacsLispの正規表現「\s」は空白文字類じゃない。
> URLリンク(d.hatena.ne.jp)
>
> じゃないの?
え・・・
マジすか・・
確かにコレなら上の構文は納得です。
ありがとうございました。
191:デフォルトの名無しさん
12/08/16 19:24:13.57
javaですが、日本語などの全角文字を探す場合、ascii以外という発想で「[^\p{ASCII}]」や「.*[^ -~].*」を使っていますが、
もっとスマートな別な表現はあるでしょうか?
192:デフォルトの名無しさん
12/08/16 20:43:41.61
>>191
java.lang.Character.UnicodeBlockで定義されてるものは使えるそうだけど。
全角というのは表示上のことだし、日本語で使うという風にも区切られていない。
HIRAGANA KATAKANA KANJIとかすると半角カナとかも含まれそう。
193:デフォルトの名無しさん
12/08/17 00:29:42.79
ambiguousとかどうするよ?
わざわざ前後の文脈までみるのか?
194:デフォルトの名無しさん
12/08/17 13:40:24.55
ruby初心者でテキスト処理初心者です
以下のテキストから「かきくけこ」を抜き出したいです
=テキスト=
(1)あいうえお
→かきくけこ
(2)さしすせそ
.scan(/あいうえお(.*?)さしすせそ/m)と書くと「→」と「(2)」が邪魔です
.scan(/あいうえお\n→(.*?)(2)さしすせそ/m)と書くと何も取り出せません
なぜうまくいかないのでしょうか
195:デフォルトの名無しさん
12/08/17 13:46:06.59
カッコをエスケープしてないから \(2\)
196:デフォルトの名無しさん
12/08/17 13:51:05.45
なるほど!ありがとうございます
197:デフォルトの名無しさん
12/08/17 13:58:31.90
.scan(/あいうえお\n→(.*?)\(2\)さしすせそ/m)にしても何も取り出せませんでした…
198:デフォルトの名無しさん
12/08/17 15:10:47.81
取り出し云々の前に、マッチするかよく確認するべきじゃないの。
例えばこんなの。
URLリンク(rubular.com)
199:デフォルトの名無しさん
12/08/17 15:27:10.60
急がば三回まわってワンとお鳴き
200:デフォルトの名無しさん
12/08/17 15:32:56.75
>>198
これだと>>197の書き方でうまくいく判定がされるのですが実際にプログラムを動かすとどこもマッチしないのです
\nのあたりに問題があるのでしょうか
201:デフォルトの名無しさん
12/08/17 15:36:36.39
その人は、うまくいかない例でやってみてどうよ?って聞いてるんだよ
202:デフォルトの名無しさん
12/08/17 15:53:41.75
できました!ありがとうございます
203:デフォルトの名無しさん
12/08/18 23:12:39.31
h?t?tps?://.+
という定義ではすべてのURLがマッチしますが
URLリンク(www.hogehoge.jpg)
といった画像リンクは除外するようにする定義を教えてください
h?t?tps?://.+(?!jpe?g|png|gif|bmp)
としてもうまくいきませんでした
204:デフォルトの名無しさん
12/08/19 03:23:09.41
>URLリンク(www.hogehoge.jpg)
これが画像のURL??
まあそういう仕様ということで、こんな感じかな。
h?t?tps?:\/\/.+\.(?!(jpe?g|png|gif|bmp)(?=\s|$))[a-z]+(?=\s|$)
205:デフォルトの名無しさん
12/08/19 08:17:42.50
どんなURLだw
206:デフォルトの名無しさん
12/08/19 09:15:56.05
自分だったら複数回grepで実現するかな。
欲しい拡張子以外を、順次消していく(該当行を\r\nに置換)
207:デフォルトの名無しさん
12/08/19 09:52:20.64
先読みと後読みを勉強すれば解決するな
208:デフォルトの名無しさん
12/08/19 17:26:30.66
URLリンク(zasshi.news.yahoo.co.jp)
こういったURLにはマッチしないんですかね
ここで調べました
PHP正規表現チェッカー ver1.0.3
URLリンク(www.rider-n.sakura.ne.jp)
209:デフォルトの名無しさん
12/08/19 20:08:06.25
>>208
最初から十分な希望例を挙げて欲しいんだけど。おかしな例じゃなくてね。
環境も分からないし。テンプレ>>1-4も読んでね。
h?t?tps?:\/\/.+\.(?!(jpe?g|png|gif|bmp)(?=\s|$|\?))[^.\s]+(?=\s|$)
>PHP正規表現チェッカー ver1.0.3
これは正しく動作してるように思えない。以下をオススメする。
URLリンク(www.rexv.org)
URLリンク(rubular.com)
URLリンク(www.gethifi.com)
210:デフォルトの名無しさん
12/08/19 20:13:46.87
正しく動いていないというのはどういうところ?
211:デフォルトの名無しさん
12/08/19 20:38:31.91
>>209
分かりました
スレ汚しすみませんでした
212:デフォルトの名無しさん
12/08/22 17:33:42.49
「$」の直前に「'」がなく、さらに「$」よりも前に「#」が一切ない正規表現ですが、
以下だとエラーになってしまいます。
(?<!^[^#]*)(?<!')\$
上記の正しい正規表現を教えていただけないでしょうか?
213:デフォルトの名無しさん
12/08/22 17:53:09.25
[^#]*[^,#]\$
では駄目かどうか教えて。
214:デフォルトの名無しさん
12/08/22 17:55:35.22
>>213
…すんません、ありがとうございます。
なんてばかだったか…
ちなみに戻り読み否定で「#.*」は使えないのでしょうか?
215:デフォルトの名無しさん
12/08/22 18:04:00.12
可変長否定戻り読みとなると、使える環境は限られます
216:デフォルトの名無しさん
12/08/24 15:14:46.73
簡単な質問かも知れませんがお願いします
「家具」を消すには /(家具)/ ですが
あくまでも例えですが「木目調家具」は消したくない場合はどのように書けばいいのでしょうか
217:デフォルトの名無しさん
12/08/24 18:57:17.56
>>216
少し上のレスにもある否定戻り読みを使って
(?<!木目調)家具
218:デフォルトの名無しさん
12/09/11 07:26:49.98
青空文庫の注記をエディタ類の置換でやろうと思うのですが
なんとか吹喋[#「喋」に「ママ」の注記]かんとか
↓
なんとか吹<ruby><rb>喋</rb><rp>(</rp><rt>ママ</rt><rp>)</rp></ruby>かんとか
\1[#「([^「」]+?)」に「([^「」]+?)」の注記]
とか後方参照は出来るエディタは無かったですね
やっぱり スクリプト組むしかないのかな
219:デフォルトの名無しさん
12/09/11 16:55:28.27
オートマトンって何ですか?
220:デフォルトの名無しさん
12/09/11 19:00:49.57
殴投魔団
221:デフォルトの名無しさん
12/09/11 19:39:19.44
状態機械
URLリンク(ja.wikipedia.org)
222:デフォルトの名無しさん
12/09/12 03:32:54.57
URLリンク(example.com)(abcABC123)/apple/(123456)
にはマッチして
URLリンク(example.com)(abcABC123)/apple/(123456)/orange/1
にはマッチしない、定義を教えてください。
()内は変動します。
https?://example\.com/[^/]+/apple/\d+
ですと、両方マッチするみたいですが、上だけにマッチするように手直しよろしくお願いします。
223:デフォルトの名無しさん
12/09/12 04:08:54.24
最後に $ を付ける?
224:218
12/09/12 07:13:43.25
結局 >>218 はWSH(VB)で
s = rfp.ReadText
Set regEx = New RegExp
Set reg2 = New RegExp
regEx.Pattern = "[#「([^「」]+)」に「([^「」]+)」の注記]"
regEx.Global = True
Set Matches = regEx.Execute(s)
For Each Match in Matches
d1 = regEx.Replace( Match.Value,"$1" )
d2 = regEx.Replace( Match.Value,"$2" )
d = d1+ Match.Value
reg2.Pattern =d
s = reg2.Replace( s , "<ruby><rb>"&d1&"</rb><rp>(</rp><rt>"&d2&"</rt><rp>)</rp></ruby>")
Next
wfp.WriteText s
とやりました
225:デフォルトの名無しさん
12/09/12 07:32:51.85
>>224
ていねいな報告、ご苦労さまです。
226:デフォルトの名無しさん
12/09/12 08:48:10.11
マッチさせた部分文字列が後にあるから、2度読みしないとたぶん無理だと思うからスクリプトで処理して正解だと思うよ
227:デフォルトの名無しさん
12/09/12 14:29:55.98
>>223
ありがとうございます
228:デフォルトの名無しさん
12/09/15 01:57:30.02
すみません、質問させて下さい
一括ファイル整理ソフト:Classifier
URLリンク(realize.jounin.jp)
こちらのソフトを使い、正規表現で大量にあるファイルの整理を行おうとしております
【写真】[イベント名] [苗字名前] 詳細.jpg
こういった形式のファイルに対して、苗字の頭一文字目が『あ行』なら
あ行のフォルダへ移動、『い行』ならい行のフォルダへ移動、という
処理をさせようと、以下の正規表現を入力し実行しました
【[^】]*】\[[^\]]*\]\s\[[亜-音][^\]]*\].*
結果を見ると、仕分けは実行されたのですが、あ行以外の苗字の方もあ行
フォルダへ仕分けされてしまいました。
こちらのソフトは開発環境がVisualBasicで、内部的には2バイトのUnicode規格に
基づいているせいで、シフトJISの漢字コード(音読み)で仕分けるにはこの正規表現
では駄目との事でした。
Unicodeの正規表現でシフトJISコードの亜-音と同じ結果が出せる正規表現方法は
無いでしょうか?もしご存知の方がいらしたら教えて下さい
よろしくお願いいたします
229:デフォルトの名無しさん
12/09/15 04:46:24.97
あるかないかで言えばあるけどそんな単純じゃないよ
230:デフォルトの名無しさん
12/09/15 12:56:11.80
ファイルが大量にあることは想像できました。
よくあるリネームではなく、特定フォルダーへの移動でしょ?
だったらdir結果をテキストエディターで1行ずつ
move ファイル名 読み仮名_あ_始まり\
って書いたら?
読みが「あ」で始まるかどうかは単なる漢字の音読み、訓読みでは判断できない場合が存在します。
人名だとどうしても人力で頑張るしかない場面だと思いましたがどうでしょうか。
自分だったら1,000人程度だったら空いた時間にしこしこ作業しますね。
231:デフォルトの名無しさん
12/09/15 14:05:44.25
migemoでふりがな取得出来ないかな…
232:デフォルトの名無しさん
12/09/15 14:33:45.73
>>231
kakashi
233:デフォルトの名無しさん
12/09/15 19:45:32.48
これかー
URLリンク(kakasi.namazu.org)
234:デフォルトの名無しさん
12/09/15 19:56:55.37
debianとかはパッケージに含まれてた気がする。<kakasi
hがあるかないかで良く見つからないけど。
文章をchasenで解析して単語をkakasiで読み順に並び替えてた記憶がある。
235:デフォルトの名無しさん
12/09/18 10:21:00.35
たとえば河野と書いて「かわの」さんも「こうの」さんもいるのでkakasiでも
どうにもならないと思うけどなぁ。割り切れるならいいけど。
236:デフォルトの名無しさん
12/09/18 11:24:02.90
お題はそんな読みを厳密にやる必要なくて、[亜-音]レベルの仕分けでいいんでしょ?
[亜唖娃阿哀愛(途中は略)音]って正規表現生成すれば?
Shift JISで↑こういう正規表現作ってから、(その方が生成プログラムが簡単なので)
Unicodeに変換すればいいよね。GUIのアプリなら、コピペするだけじゃないのかな?
237:デフォルトの名無しさん
12/09/18 11:45:23.31
コレだけだけど、ア行の苗字の1/10もない気がする
亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷
安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣
謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭
院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲
荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円
園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押
旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音
238:デフォルトの名無しさん
12/09/18 13:13:07.21
あれま
239:デフォルトの名無しさん
12/09/18 13:45:38.31
こういう事例見ると、ファイル名に全角カタカナでフリガナを持っとくのも有りだな。
240:デフォルトの名無しさん
12/09/18 21:08:24.29
>>239
そのアイデア、正規表現関係ないけどファイル整理に便利そうだな。
いや、ファイル検索のときは正規表現使うから関係あるか。
241:デフォルトの名無しさん
12/09/18 22:07:01.78
ファイル名に頼らないで、一行目に漢字とカナとローマ字入れとくとか、dbに入れといた方がよさそうだ。
242:デフォルトの名無しさん
12/09/19 12:04:10.79
dbってlinuxコマンドのdb?
RDBMS(MySQLとかPostgreSQL)にファイル名用テーブルでも作っとけばいい感じはする。
243:デフォルトの名無しさん
12/09/19 13:53:28.74
>dbってlinuxコマンドのdb?
Berkeley DBのことか
244:デフォルトの名無しさん
12/09/19 20:47:28.90
複雑度によるけど、どっちでもいいんじゃない。ファイルシステムという単純なdbじゃ大変そうという話。
245:デフォルトの名無しさん
12/09/20 01:32:09.66
>235
ニホンゴムズカシイデスネ
246:デフォルトの名無しさん
12/09/21 12:01:12.94
>>245
英語でもPh-はF-と同じ発音だしKn-はしばしばKを発音しない。
読みで分類するからそういう問題に直面するわけで。
# じゃぁ読みで分類するのをやめようとなると、それはそれで別の問題があるけれど。
247:デフォルトの名無しさん
12/09/22 23:39:02.10
ちょっと質問、null文字を検索したら全部ヒットするんだっけ?
248:デフォルトの名無しさん
12/09/22 23:56:11.73
>>247の質問訂正
配列のデータすべてヒットさせるのは//ではなく/.*/の方がいいかな?
249:デフォルトの名無しさん
12/09/23 00:03:06.22
配列ってどの言語の配列よ?
>>4のテンプレに従って環境書こうぜ
250:デフォルトの名無しさん
12/09/23 00:21:34.93
>>249
ごめん、perlです
251:デフォルトの名無しさん
12/09/23 00:27:38.76
>>250捕捉
ActivePerl5.14.2で配列を検索で、全データをヒットさせたい場合は
空文字列を検索でも全データがヒットするけど、きちんと.*を指定したほうが
いいのかと思っての質問
単純にperl5の環境で空文字列を検索したら全データヒットと定義されてるのか疑問に思った
252:デフォルトの名無しさん
12/09/23 23:49:39.15
●正規表現の使用環境
Perl
●検索か置換か?
検索
●説明
文字列中の数字を配列の各要素に格納したい。以下のプログラムを作りました。
9がresultの先頭に入るのみなのです。このような場合splitを用いるのでしょうか?
$str = "TEST 0 1 2 3 4 5 6 7 8 9";
@result = $str =~ m/^TEST(?:\s(\d))+$/g;
253:デフォルトの名無しさん
12/09/23 23:54:17.31
>>252はPerlスレに現れた荒らし
条件後出しするわブログでもないのに自分の行動予定書いていくわのマジキチ
スルーよろ
254:デフォルトの名無しさん
12/09/23 23:55:58.14
>>253
情報サンクス。今真面目に回答書いて投稿前にリロードしたら書いてあって助かったよ。
ギリギリだったw
255:252
12/09/23 23:56:15.93
別に荒らしのつもりじゃ無いので、判る人回答お願いします。
256:デフォルトの名無しさん
12/09/23 23:57:09.54
>>252に回答しても後から情報出されてどうこう言われる
257:デフォルトの名無しさん
12/09/23 23:58:28.49
一人粘着質のキチガイがいるけど気にしないでね
258:デフォルトの名無しさん
12/09/24 00:04:52.12
>>252
自分で荒らすだけじゃ飽きたらず向こうの荒らしまで連れてきたのかよ
本当に迷惑だな
社会からさっさと消えればいいのに
259:デフォルトの名無しさん
12/09/24 00:07:30.59
今まで質問しただけで、こんなに叩かれたことなかったんで…
260:デフォルトの名無しさん
12/09/24 00:08:56.32
死ねよカス
261:デフォルトの名無しさん
12/09/24 00:13:39.12
基地害>>252荒らしかた
暴れる奴の多いスレに釣り質問を投下する
↓
条件を後だしする
↓
初心者を免罪符にする
↓
ブログ代わりにする
↓
暴れてる奴がついてくるように次の行き先を明示
↓
次のスレを荒らす←いまココ
262:デフォルトの名無しさん
12/09/24 00:15:38.27
>>259
ここはテメーの愚痴スレじゃねーぞ精神障害
どんなks親に育てられたんだコイツ
263:デフォルトの名無しさん
12/09/24 00:28:11.86
どうせ馬鹿が叩いてるだけだろうと思って一応回答は書き上げたが、
念のためにと思って元のスレ(どことは書かないけど分かると思う)
を見に行ってみたら、これは本物の釣りっぽいね。
どう見てもわざと煽ってるようにしか見えないし、万が一釣りじゃ
なかったとしても同じように後から注文つけられる可能性が高い。
264:デフォルトの名無しさん
12/09/24 00:53:53.21
>>252が荒らしじゃないなら本気で頭おかしいと思う
しかも自覚なさそうだからかなりヤバい
265:デフォルトの名無しさん
12/09/24 11:49:11.40
そういう時は、マルチと一言書くだけにしてください
個人的な感想はいらない
266:デフォルトの名無しさん
12/09/24 13:29:22.30
マルチっていうか、機能不全に陥ってるスレで質問しちゃった人が
むりくり荒らし認定する人に絡まれて逃げてきたら、
余計な人も付いてきちゃったという流れ
267:デフォルトの名無しさん
12/09/24 13:40:32.31
逃げるのにわざわざ行き先言って逃げるのか?w
どう考えても不自然
268:デフォルトの名無しさん
12/09/24 14:02:19.45
マルチと言ったら「はわわ」と返すのがマ板の流儀だと思っていた
269:デフォルトの名無しさん
12/09/24 15:05:04.06
???
ここはム板だぞ
270:デフォルトの名無しさん
12/09/24 15:41:50.50
NullPointerException
すまん
271:デフォルトの名無しさん
12/09/24 15:57:54.50
もうすぐ10がっ
URLリンク(www.youtube.com)
272:uy
12/09/25 03:48:48.13
板全体の荒れ方がひどいな
あと人の集まってるC++、C#スレあたり荒らしたら板終わるんじゃね
273:デフォルトの名無しさん
12/09/25 05:44:16.46
>>272
Schme/LISP/関数型言語のtwitterでの書き込みは一日平均500を超えるようだけれど、
2chではほとんど0に近い。もうダメ的な状態ではないか。
274:デフォルトの名無しさん
12/09/25 08:46:22.42
しかもまともな人に限ってTwitterにさっさと行ってしまってるしねぇ。
275:デフォルトの名無しさん
12/09/25 09:31:51.61
(2chにまともな人材がいたとは)知らなかった
276:デフォルトの名無しさん
12/09/25 09:45:30.85
いるとか、考え方が気持ち悪い
277:デフォルトの名無しさん
12/09/25 10:46:56.83
>>273
おすすめのユーザー教えてくれ
278:デフォルトの名無しさん
12/09/25 21:51:10.58
めんどくさいでしょ
279:デフォルトの名無しさん
12/09/26 15:41:28.14
(Twitterに)まともな人材がいたとは知らなかった
280:デフォルトの名無しさん
12/09/26 15:53:40.56
>>279
大学院生、准教授クラスがごっそり。
281:デフォルトの名無しさん
12/09/26 16:05:29.43
>>279
関数型言語全体でいうと、大学生+院生+研究者だけで数千人いるのではないか。
一方、2chは珠に読む人を加えても100人にも満たない。
282:デフォルトの名無しさん
12/09/26 16:13:05.03
昨年一年間に、関数型言語ではないが、プログラミングの話題として日本語でPrologとツイートした
人だけで延べでなく2400人いた。関数型言語全体だと多分その10倍以上。
283:デフォルトの名無しさん
12/09/26 21:17:21.52
Prologダメだなとつぶやいたヒトがそんなに。
284:デフォルトの名無しさん
12/09/26 21:57:03.68
>>283
よくご存知だね。Prologワカンネの方が多い。
285:デフォルトの名無しさん
12/09/26 22:14:14.09
授業中にツイートするやつが多い
286:デフォルトの名無しさん
12/09/27 06:57:40.26
>>282
Prologのプログラマ人口から考えると脅威のツイッター組織率だ
287:デフォルトの名無しさん
12/09/27 07:01:05.56
>>286
驚異ではなくw
288:デフォルトの名無しさん
12/09/27 12:02:56.50
スレ違いな話題が多すぎるんで、正規表現の話にせめて絡めたいんだけど、
正規表現で2chやtwitterとかを検索できるサイトとかアプリってないのかな?
まあそれ以前にGoogleやらBingやらYahooやらの検索サイトに正規表現検索機能が欲しいんだが、
一般ユーザーが必要としないマニアックな検索方法を提供する気はないんだろうな
289:デフォルトの名無しさん
12/09/27 20:55:45.67
>>288
いちいち全文検索してるわけじゃなく、インデックスから引いているだけだからあまり意味ないんじゃないか。もしできても、利用者どれくらいだよ。否定やorも使われてないだろう。
290:デフォルトの名無しさん
12/09/28 00:13:11.17
or はたしかに使わないけど、否定は使うだろ。
291:デフォルトの名無しさん
12/09/28 00:34:45.14
コマンドオプションをそのまま貼って否定になってたりな。-help
292:デフォルトの名無しさん
12/09/28 03:51:56.34
>>290
以前は、たとえば「インタフェース OR インターフェース」みたいな、
表記の揺れを吸収するためにときどき使ってたんだが、
いまのGoogleじゃ全部向こうで勝手に吸収してくれるからな。
「interface」すら検索してくれる。
293:デフォルトの名無しさん
12/09/28 08:55:24.32
いんたーふぇすでも通る
294:デフォルトの名無しさん
12/09/28 10:33:09.84
もしかして 朝鮮人
295:デフォルトの名無しさん
12/09/30 21:25:19.20
ν速に帰れば?
296:デフォルトの名無しさん
12/10/01 15:52:01.10
●正規表現の使用環境
C#
●検索か置換か?
検索
●説明
タグの外にある文字列を順に取り出したい
●対象データ
<hoge><hoge></hoge>あああ<hoge><hoge></hoge>いいい<hoge></hoge>ううう<hoge><hoge>・・・
●希望する結果
while (m.Success)
の繰り返しの中であああ、いいい、ううう・・・と順に取り出していきたい
よろしくお願いします。
297:デフォルトの名無しさん
12/10/01 15:59:13.26
どれもタグの中にあるように見えます。 タグ以外ということでしょうか?
298:デフォルトの名無しさん
12/10/01 16:04:40.91
タグ以外ということでOKです。あと改行が含まれているのでその辺はどうなるでしょうか?
299:デフォルトの名無しさん
12/10/01 16:27:06.78
対象データがダメダメじゃん。
300:デフォルトの名無しさん
12/10/01 16:55:21.70
まあ、タグの定義を細かくやると書ききれない話になるので、
var list = from x in System.Text.RegularExpressions.Regex.Split( text,"<.*?>", System.Text.RegularExpressions.RegexOptions.Singleline) where x!="" select x ;
程度でいいのならこれで。
301:デフォルトの名無しさん
12/10/02 09:54:42.29
よろしくお願いします。
●正規表現の使用環境
サクラエディタ bregonig.dll Ver.3.02
●検索か置換か?
検索
●説明
"START"から"END"に囲まれた"HOGE"を最短一致(というのか?)で含まれる行を検索したい
●対象データ
1.xxxxxxxSTARTyyyyyyyyHOGEzzzzzzzzzzzENDaaaaaaa
2.xxxxxxxSTARTyyyyyyyyENDbbbbbbbHOGEzzzzzzzzzzzENDaaaaaaa
●希望する結果
1.だけマッチ
2.は"END"が"HOGE"の前に入ってるのでマッチ対象外
302:デフォルトの名無しさん
12/10/02 10:40:02.40
1の小文字部分にENDがないものと解釈した場合
^((?!END).)*?START((?!END).)*?HOGE((?!END).)*?END((?!END).)*?$
303:301
12/10/02 12:16:03.97
>>302
ありがとうございます。
なるほど、((?!END).)*?の部分がポイントですね。
えと、すみません説明が不十分でした。
・1.の"yyyyyyyy"部分以外の小文字部分いずれかに"END"があってもマッチ
・1.の"zzzzzzzzzzz"部分に"END"があればそこまで(最短で)マッチ
・1.の小文字部分いずれかに"START"があっても"START~HOGE~END”の最短パターンでマッチ
・1.と2.の複合(1.の後ろに2.のパターンとかその逆とか)の場合でもマッチ
(条件がまだ足りてなかったり、冗長だったりするかもしれませんが)の場合は、レスの答えを参考に
START((?!END).)*?HOGE.*?END
として試してるところですが、これで良いのかな?
304:デフォルトの名無しさん
12/10/02 12:48:40.42
>>303
条件を満たす行だったので
START((?!END).)*?HOGE.*?END
は STARTとHOGEの間にENDがなくHOGEの後ろにENDが少なくともひとつある
つまり、このマッチする部分の前か後ろ、HOGEとENDの間に
*STARTとHOGEの間にENDがある部分* があっても良ければそれで
305:301
12/10/02 14:59:07.75
>>304
> 行だったので
あぁー!自分で「行を検索」と書いてました。すみません。正確には「部分を検索」です。
> このマッチする部分の前か後ろ、HOGEとENDの間に
> *STARTとHOGEの間にENDがある部分* があっても良ければそれで
えと、波下線(~~~)をマッチ対象部分とすると、
a. このマッチする部分の前か後ろに *STARTとHOGEの間にENDがある部分*がある
a-1:STARTaaaaaENDbbbbbHOGEcccccSTARTdddddHOGEeeeeeEND (前にある場合)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a-2:STARTaaaaaHOGEbbbbbENDcccccSTARTdddddENDeeeeeHOGE (後ろにある場合)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
b. HOGEとENDの間に *STARTとHOGEの間にENDがある部分* がある
b-1:STARTaaaaaHOGEbbbbbSTARTcccccENDdddddHOGEeeeeeEND
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a,bいずかでも良ければ、と解釈しました。
a,bとも下線のように、期待通りにマッチしていますが、
誤解とか頓珍漢な事を言ってるようなら、何なりと指摘してください。
国語が苦手なうえに回転が悪くてスミマセン(´・ω・`)
306:デフォルトの名無しさん
12/10/02 15:13:22.64
STARTaaaaaHOGEbbbbbENDcccENDで最短にならないぐらいかな
307:301
12/10/02 15:18:10.19
連投スミマセン。
START((?!END).)*?HOGE.*?END
を使っていろいろやってみてる最中ですが、(波下線部分がマッチ対象部分)
xxxxxxxSTARTyyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaaHOGEbbbbbbbENDcccccccc
a~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
b~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上のケースでは、aの部分がマッチしてしまうようです。
bの部分をマッチさせたかったのですが…
START((?!END).)*?HOGE((?!START).)*?END
"HOGE"と"END"の間に"START"は無しを条件にすればと
解らないなりに、こうか?wとやってみたのですが、結果は変わりませんでした_ノ乙(、ン、)_
308:デフォルトの名無しさん
12/10/02 15:21:24.72
その場合は、 ((?!END).)*? が yyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaa にマッチするので
309:デフォルトの名無しさん
12/10/02 15:31:58.02
START HOGE ENDの間に許容される条件が分からないので・・・
START((?!START|HOGE|END).)*?HOGE((?!START|HOGE|END).)*?END だと?
310:301,303,305,307
12/10/02 17:21:33.52
レスありがとうございます。
相変わらずの長文でゴメンナサイ
>>306
えと、こちらの環境だと
STARTaaaaaHOGEbbbbbENDcccEND と最短でマッチしています…
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>308
> ((?!END).)*? が yyyyyyyyHOGEzzzzzzzzzzzSTARTaaaaaa にマッチするので
HOGE.*?ENDの部分で短めにマッチするからということですかねムツカチ━━(;´д`)━━イィィ
>>309
ぉおおっ!
> START((?!START|HOGE|END).)*?HOGE((?!START|HOGE|END).)*?END だと?
を見てなんとなくわかったような気がしてるような気がします。
> 許容される条件が分からないので・・・
ずびばぜん。゚(。ノωヽ。)゚。まとめます。>>303みたいに書かずに
*マッチ対象部分では*
1)"START"と"END"の間は、"START"と"END"は出現しない
2)"HOGE"は一つ以上出現しても良い
でよいのかな?やっぱりなんか混乱してるかも…σ(・´ω・`;)アハアハアハ ということで、
START((?!START|END).)*?HOGE((?!START|END).)*?END
こうですかね?これで様子を見ます。本当にありがとうございました。
311:sage
12/10/08 18:38:19.35
●正規表現の使用環境
練馬、nemery等のリネームソフト
可能なソフトに乗り換えようと思ってます
●検索か置換か?
置換
●説明
1.ファイル名末尾の数字が1桁の場合、0をつける。2桁の場合はそのまま
ファイル名途中の数字はスルーさせたい
2.特定の文字(例では#)から特定の文字(例では-)の前までを削除したい
●対象データ
キリン#◯☓動物園-10月1
しろくま#△☓◯動物園-5月12
猫(2匹目)#我が家-11月5
●希望する結果
キリン-10月01
しろくま-5月12
猫(2匹目)-11月05
よろしくお願いします
312:デフォルトの名無しさん
12/10/08 19:12:51.17
練馬 SJIS版
1
s/(?<![0-9])([0-9]{1})$/0\1/k
2
s/#.*-/-/k
313:デフォルトの名無しさん
12/10/08 20:02:16.41
>>312
ありがとうございます
練馬で頑張ってみますね
314:デフォルトの名無しさん
12/10/11 18:53:52.96
tで始まる文字列を文頭のthe[スペース]を無視して検索する場合
^t[^h]|^th[^e]|^the tが思いついたけど、もっといい正規表現ありますか?
環境はActive Perl5で否定演算子!は使えません
315:デフォルトの名無しさん
12/10/11 18:59:56.47
>>314の訂正
×^t[^h]|^th[^e]|^the t
○^t[^h]|^th[^e]|^the[^ ]|^the t
×の正規表現だと"there"とかがヒットしなくなってしまう。失礼しました
よろしくお願いします
316:デフォルトの名無しさん
12/10/11 20:17:23.53
lookbehindが使えないって意味じゃないよな?
(?<!^the )t
317:デフォルトの名無しさん
12/10/11 21:09:22.06
>>316
レスありがとうございます
(?<!^the )tを使ってみましたがうまくいきませんでした
lookbehindは知りませんでした、勉強していろいろ試してみようと思います
318:デフォルトの名無しさん
12/10/11 21:35:20.97
(?!^the\b)\bt\w+
こう?
319:デフォルトの名無しさん
12/10/11 21:51:37.73
/(?!the )t\w+/
これだと末尾のtheという単語拾うけど
320:デフォルトの名無しさん
12/10/11 21:55:51.23
>>318
たびたびすいません
それもうまくいきませんでした。文字列の途中の"t"もヒットしているようです
"abc this def"とかもヒットして"t"で始まる文字列のみのヒットにはなってないです
321:デフォルトの名無しさん
12/10/11 22:18:05.08
>>320
文頭のtheを除くtで始まる語全てを拾うようにした(=そうなるようにした)んだけど
ものすごく要件読み違えてたのか
322:デフォルトの名無しさん
12/10/11 22:31:43.65
>>321
"文頭のtheを除くtで始まる語全てを拾う"でいいんですけど
僕の環境だと(?!^the\b)\bt\w+でもうまくいかないんです
やりたいことは"the abc"とかは排除して"the tuv"や"there"や"tabc"とかはヒットさせたいということです
配列の各文字列を検索してるんですが、配列には"abc this def"や"abc the def"
とかも入ってます
323:デフォルトの名無しさん
12/10/11 22:38:34.31
^(?!the\b)t\w+
こうなのか?
324:デフォルトの名無しさん
12/10/11 22:47:53.42
>>323
それでほぼヒットしたんですが、"the t"で始まる("the "の後に"t"で始まる)
文字列だけがヒットしてないです
たびたびすいません
325:デフォルトの名無しさん
12/10/11 22:49:02.16
>>322
うーん自分は"文頭のtheを除くtで始まる語全てを拾う"だと思ったから
> "abc this def"や"abc the def"
このthisやtheにもマッチさせてたんだよ
"the tuv" は tuv でマッチすべきだけど
"abc tuv def" なら tuv にはマッチしちゃいけないのか
326:デフォルトの名無しさん
12/10/11 22:53:18.24
^(?:(?!the\b)t\w+|the t\w+)
>>323-324を見たらこうなったけど要件はわかってない
327:デフォルトの名無しさん
12/10/11 23:01:51.10
>>325
わかりにくくてすいません
配列内の文字列全体で"文頭のtheを除くtで始まる語全てを拾う"であって
ワード単位で"文頭のtheを除くtで始まる語全てを拾う"ではありませんでした
"abc tuv def"はマッチさせません。あくまで配列内の文字列全体で"t"で始まるです
配列内の文字列の最初が"t"で、最初の"the "は無視するということです
328:デフォルトの名無しさん
12/10/11 23:08:33.82
>>324訂正
"the t"で始まる("the "の後に"t"で始まる)文字列だけでなく
"t'abc"や"t.a.b.c"などがヒットしてなかったです
>>326
レスありがとうございます
"the t"で始まる文字列もヒットしましたが、"t'abc"や"t.a.b.c"などがヒットしていないです
329:デフォルトの名無しさん
12/10/11 23:12:26.40
\w はおせっかいだったのか
^(?:(?!the\b)t|the t)
330:デフォルトの名無しさん
12/10/11 23:17:51.66
"the the"の場合は?
331:デフォルトの名無しさん
12/10/11 23:21:45.68
>>329
ありがとうございます。すべてヒットしました
正規表現は初心者で"|"を多数使って力技でヒットさせてました
もっと正規表現の勉強が必要だと痛感しました
>>330
それは想定していませんでしたw
最初の"the "だけを無視ということで・・・
332:デフォルトの名無しさん
12/10/11 23:33:28.55
t.A.T.u.
最初からテンプレに沿って例題集を提示して欲しかったな。>>311みたいに。
今度からはそうして。
…thereだけでなくthe:4にもヒットしてくれとか、もう言わないよね?
333:デフォルトの名無しさん
12/10/11 23:39:21.03
ちょw
>>331
否定演算子!を使えなかった理由は?
334:デフォルトの名無しさん
12/10/11 23:40:21.32
>>332
拙速な質問ですいませんでした。以後気をつけます
the:4はヒットしなくていいです
どうもありがとうございました
335:デフォルトの名無しさん
12/10/11 23:45:15.76
>>333
理由はわかりません。僕の環境では/^t!h/で検索してみても"tuv"や"true abc"
などがまったくヒットしないです
336:デフォルトの名無しさん
12/10/11 23:51:00.06
>>335
Perlの否定演算子って、 !~ とかを指してるんじゃなかったのかw
そりゃ無理っしょ
337:デフォルトの名無しさん
12/10/11 23:55:30.32
>>336
すいません、perlも最近使い始めたばかりであまりよくわかってないです
勉強してみます
338:デフォルトの名無しさん
12/10/12 21:35:10.48
/\*[^*]*\*+([^/*][^*]*\*+)*/
Cのコメントをとりのぞく
詳説 正規表現
p.192
p.326
339:こんまけ
12/10/13 10:48:59.23
\*+の後なら[^*]なので。
/\*[^*]*\*+([^/][^*]*\*+)*/
じゃダメな理由とか例は出せられます?
340:デフォルトの名無しさん
12/10/13 12:06:56.17
339のだと/****/*/みたいのにもマッチできるので良くない。
単独でマッチさせるだけだと普通の正規表現エンジンなら
/****/の部分まででマッチしちゃってそっから先には行かない
けど、他の正規表現を前後につけると違いが出てくると思う。
例えば全体を^と$で挟むとか。
341:デフォルトの名無しさん
12/10/13 13:25:10.54
コンパイラの構文解析機を使うのが確実。自分のコーディングルールだけで使うなら、自分のツールボックスにしまっておけばいい。
342:339
12/10/13 15:38:32.78
れすさんくす、
338 も 339 もベストじゃなくて、339 が 338 よりベターなんですね。
例えば、コメントの後ろにAという文字がある場合を検索したいとか…
343:デフォルトの名無しさん
12/10/13 20:26:20.34
AAA : BBBB CCCC DDD1[0] DDD2[1] DDD3[2] DDD4[3]
がある場合にDDD1[0] DDD2[1] DDD3[2] DDD4[3]のみ取得したい。
もしくはAAA : BBBB CCCC を削除したいです。
よろしくお願いします。
344:デフォルトの名無しさん
12/10/13 20:54:07.95
>>343
DDD\d\[\d\]
345:デフォルトの名無しさん
12/10/13 21:38:35.67
環境書かない方も悪いけど、互換性低い\dで回答するのはどうなんだろう
346:デフォルトの名無しさん
12/10/13 21:47:54.77
正規表現における
#
ってどんな意味を持つのですか?
347:デフォルトの名無しさん
12/10/13 21:50:54.31
>>346
#
348:デフォルトの名無しさん
12/10/13 21:59:51.01
>>345
ごめん。 \d=[0-9]
質問から察するに、数字部分は可変だろうね。
349:デフォルトの名無しさん
12/10/13 22:00:36.84
>>346
特に意味なし。単なる「#」という文字。
350:デフォルトの名無しさん
12/10/13 22:05:33.99
>>347
>>349
ありがとうございます
351:デフォルトの名無しさん
12/10/13 22:07:23.75
>>345
\dが[0-9]でないのって、どんなのがあるの?
352:デフォルトの名無しさん
12/10/13 22:22:42.43
>>351
秀丸はバージョン7あたりまで\dとか\sあたりが使えなかった
grepとかsedコマンドとかviエディタ内の正規表現とか
まあこの辺になってくると()や|の前にバックスラッシュつけないと
正規表現として機能しないという点でも非互換だけどもw
353:デフォルトの名無しさん
12/10/13 22:37:04.96
>>351
鬼車や鬼雲の\dは[0-90-9]と等価
Ruby 1.9系の正規表現エンジンは鬼車だけどカスタマイズされたフォーク版なので、\dを [0-9]と等価になるように修正してある
354:デフォルトの名無しさん
12/10/13 23:25:52.84
>>352 なるほど。
古めのエンジン、正規表現の源流に近いあたりでは\dは無いのね。
しかし秀丸バージョン7って、かなり最近じゃ。ちょっとひどいな。
>>353 そうなのかー。
先進的すぎても主流との互換性の点で問題あるよね。
355:デフォルトの名無しさん
12/10/13 23:41:43.03
>>353
>鬼車や鬼雲の\dは[0-90-9]と等価
うお、なんかイメージよりも範囲広すぎ。
敢えて[0-9]って書いといた方が無難なのね。
356:デフォルトの名無しさん
12/10/13 23:51:08.46
>>353
鬼雲は(?u),(?a)でUnicodeの範囲かASCIIの範囲かを制御できる。
\d,\s,\wがUnicodeの範囲でマッチするのはPerlに合わせた仕様。
357:デフォルトの名無しさん
12/10/24 21:11:42.58
●正規表現の使用環境
MSVC2012 / .NET Framework 4.5
●検索か置換か?
検索
●説明
「|」「(」「)」が文字として入っているデータから、特定の文字列を抜き出したい。
●対象データ
area|name (value)
tokyo|yamada benzo (123)
kyoto|namae tarou (21)
saga|shitemo mitukaranai you (7)
●希望する結果
area, name, value
"tokyo", "yamada benzo", "123"
"kyoto", "namae tarou", "21"
"saga", "shitemo mitukaranai you", "7"
このように取り出したいのですが、どのように書くとよいでしょうか
358:デフォルトの名無しさん
12/10/24 21:20:10.28
カッコの整合を取りたいのでなければ
"tokyo|yamada benzo (123)".Split(new char[] { '|', '(', ')' },StringSplitOptions.RemoveEmptyEntries)
でよかったりしない?
359:デフォルトの名無しさん
12/10/24 22:06:41.28
>>358
あ、本当ですね…。
このやり方のほうがさっぱりしてていいですね。
こちらでやらせてもらいます。
解決できちゃいました。
どうもありがとうございました。
360:デフォルトの名無しさん
12/11/01 12:21:53.25
あー!
正規表現で空白を縮めればいいのか
361:360
12/11/01 12:23:30.20
すみません自己解決しました
362:デフォルトの名無しさん
12/11/06 14:38:40.09
「CDATA」を含まない行を検索したいのですが、先読み否定を使用しましたがうまく検索できませんでした。
^(?!.*?CDATA)
指定文字列を含まない行をどのような指定で検索できるでしょうか?
363:デフォルトの名無しさん
12/11/06 14:42:14.02
つ[grep -v]
364:デフォルトの名無しさん
12/11/06 14:48:45.45
>>362
自己レス
Java → ×
サクラエディタ → ○
Javaの問題?
365:デフォルトの名無しさん
12/11/06 15:13:49.63
^((?!CDATA).)*$
366:デフォルトの名無しさん
12/11/09 22:58:08.67
●正規表現の使用環境
perl5
●検索か置換か?
置換
●説明
keyとvalueの間はコロン区切り、keyとvalueのペアの間はカンマ区切りになっている
key1:value1,key2:value2,key3:value3 という形式で書かれている文字列で、
指定したkeyに対応するvalueの値を取得したい。
・valueの文字列にはコロンやカンマが入っている可能性があるので、それを区切り文字にはできません。
・valueの文字列は、:value:や,value,のように、先頭や末尾がコロンやカンマの可能性があります。
・key3:value3,key2:value2,key1:value1 のように順番は変わる可能性があります。
・keyとvalueのペアは、何個あるかはわかりません。0個の場合もあり。
・指定するkey以外のkeyについても、何があるかはわかりません。
・keyもvalueも可変長で、valueが空という場合もあります。
●対象データ
AAA:V,:1,BBB:V,,::2,CCC:V,,,:::3,DDD:,V4:,EEE:
●希望する結果
AAAをkeyとすると、V,:1
BBBをkeyとすると、V,,::2
CCCをkeyとすると、V,,,:::3
DDDをkeyとすると、,V4:
EEEをkeyとすると、空
FFFをkeyとすると、空
3日くらい試行錯誤してますが、全然解決できず気が狂いそうです・・・
完全に、論理的に無理ゲーでしょうか?
367:デフォルトの名無しさん
12/11/09 23:36:12.98
値(orKey)にデリミタがエスケープ無しで出るなら区別できないんじゃね?
例に挙げているのでも
DDD=空
V4=空
EEE=空
と言う解釈も出来る(FFFは存在しないKey)
368:デフォルトの名無しさん
12/11/09 23:40:02.61
>>366
素直にsplitしたら負け?
369:デフォルトの名無しさん
12/11/10 00:32:09.53
デリミタ制限してないなら無理ゲーだろ
V,:1,BBB:V,,::2,CCC:V,,,:::3,DDD:,V4:,EEE:
たとえば↑これ全体がAAAのvalueならどこで切れるんだよ
370:デフォルトの名無しさん
12/11/10 02:57:15.54
> DDDをkeyとすると、,V4:
これは何故なんだ?書かれてる条件だけ見ると
>>367が書いてる通り DDD=空 になるように思える
そこが明確にならなければ正規表現使うどころか
実直に一文字ずつパースしても無理に思える
371:デフォルトの名無しさん
12/11/10 03:57:23.97
手作業でやっても一意に決まらないようなのはどうしようも無いぞ
372:デフォルトの名無しさん
12/11/10 12:21:33.25
正規表現がどうのより、データの出力形式を見直したほうがいいな。
表計算ソフトのCSVの出力形式とか参考にしてさ。
正直、正規表現の出番以前の問題だよ。まずは論理的で明確なデータを用意するべき。
373:366
12/11/10 21:43:20.41
>>367, 368, 369, 370, 371, 372
たくさんのレス、アドバイスありがとうございます。お礼が遅くなりすみません
>>367, 369
やはり、デリミタが値の中に出てくる時点で、無理なデータぽいですよね。
>>368
splitするにも、カンマがデータ中に出てきたりするもので・・・
>>370
「,V4:」という部分が、データなのです。この場合のカンマは、デリミタではなく値でして・・・
>>371, 372
やはり、論理的に矛盾したフォーマットですよね・・・
結論として、とりあえずsplitでパースしたものがだいたい正常になるので、後は目視・手作業でやることにしました。
無茶苦茶なフォーマットのデータを置いて行った前任者を恨みます・・・
374:デフォルトの名無しさん
12/11/10 21:51:25.57
, と : がデータの一部として使われるときにある程度の規則性があるならそれを利用して判別
するといいかもね。まぁこれにも限界があるし誤爆の可能性もあるから目視は必須だけどね。
375:デフォルトの名無しさん
12/11/10 22:08:21.52
前任者がキ印とかカワイソス
376:デフォルトの名無しさん
12/11/11 01:40:44.89
目視で決められるのなら何か規則性があるんじゃないの?
キー名だと分かる何かが?
377:デフォルトの名無しさん
12/11/11 01:44:41.01
値に隠された制約があるはず。 でなければ目視で出来ない。
378:デフォルトの名無しさん
12/11/11 18:42:00.12
わからない時は古くからいる人に聞く、
これも「目視」のうちに入るのかもしれんしな。
379:デフォルトの名無しさん
12/11/11 20:50:46.82
>>376
文脈で判断だと、規則が膨大になりすぎるんじゃない。
380:デフォルトの名無しさん
12/11/11 22:40:27.53
●正規表現の使用環境
perl
●検索か置換か?
置換
●説明
1文字だけのAを空白に置換(または削除)したい
●対象データ
appleAisAdeliciousAAA
●希望する結果
apple is deliciousAAA
前後に同じ文字が連続していない場合、その文字だけを消したいです。
381:デフォルトの名無しさん
12/11/11 22:53:00.61
先頭のaも消してよければコレ
(?<!a)a(?!a)
382:デフォルトの名無しさん
12/11/11 22:54:55.34
あ、大文字だけか。
perlはよくわからんけどオプションかなんか指定して
aをAにすりゃたぶん大丈夫
383:380
12/11/11 23:15:05.09
>>382
ありがとうございます。
先頭にAがあると消えてしまいますが、教えて頂いた方法でできました。
$string =~ s/(?<!A)A(?!A)//g; という文です。
できれば、先頭のAが消えないパターンが理想なので、
引き続きアドバイスを募集させてください。
384:デフォルトの名無しさん
12/11/11 23:27:49.74
んじゃ、これでは?
(?<!^|A)A(?!A)
385:デフォルトの名無しさん
12/11/12 00:15:19.92
>>384
ありがとうございます。
ただ、こちらの表現は「Variable length lookbehind not implemented in regex」
というエラーになって実行できませんでした。
どうやら、戻り読み?というものに対応できていないようです。
環境を書き忘れましたが、xammpを入れてperl 5.16.1で実験してます。
386:デフォルトの名無しさん
12/11/12 03:15:42.78
もっと原始的に、これはどうか。
(^|[^A])A([^A]|$)
\1 \2
\1\2
ただ、よく分からないのは
>前後に同じ文字が連続していない場合、その文字だけを消したいです。
文字? 置換対象はAだけだよね?
387:デフォルトの名無しさん
12/11/12 03:20:51.76
あれ、>>383をよく読んでなかった。
>先頭のAが消えないパターンが理想
条件追加/変更なら改めて例示をやり直してくれるとありがたいんだけど。
これならいいかな?
([^A])A([^A]|$)
388:デフォルトの名無しさん
12/11/12 07:19:30.62
(?<!^)(?<A)A(?!A)
389:デフォルトの名無しさん
12/11/12 10:32:08.35
( ´д)ヒソ(´д`)ヒソ(д` )
390:388
12/11/12 11:02:29.20
すまん。!が抜けてた。(?<!A)
391:デフォルトの名無しさん
12/11/12 16:00:51.00
テストしてから書き込んでないってのがよく分かるな。せめて動作確認してから貼れよ。
392:デフォルトの名無しさん
12/11/12 18:33:07.61
ちょっとかっこ悪い
(?<=.)(?<!A)A(?!A)
393:デフォルトの名無しさん
12/11/12 18:52:46.82
戻り読みより\K使えよ
固定長の必要なくなるぞ
394:デフォルトの名無しさん
12/11/12 20:55:01.12
perlなら文字列操作関数で頑張ればいいのに。人に聞けばいいや、はイカン。
395:デフォルトの名無しさん
12/11/15 14:27:21.57
同じ英数字が4文字以上、の正規表現は(a{4,}|b{4,})…と地道に指定しないとダメでしょうか?
396:デフォルトの名無しさん
12/11/15 15:29:29.79
●正規表現の使用環境
php
●検索か置換か?
置換
●説明
2文字目以降の「.」以外の数字を「*」に置換したい。
●対象データ
12.34
●希望する結果
1*.**
397:デフォルトの名無しさん
12/11/15 19:52:54.79
>>395
([a-zA-Z0-9])\1{3,}
398:デフォルトの名無しさん
12/11/15 21:00:56.65
>>396
\G使え。
399:デフォルトの名無しさん
12/11/18 11:15:26.52
●正規表現の使用環境
jruby1.7.0
●検索か置換か?
検索
●説明
<abc def/>とあるようなタグを検索したい
●対象データ
<bbb><aaa><abc/></aaa></bbb>
●希望する結果
<abc/>
タグ内の文字列は記号を含んだ任意の文字列です
<.*?\/> とすると
<bbb><aaa><abc/> とか
<aaa><abc/> とかでヒットするのでどうにか
<abc/> だけでヒットさせることができないものでしょうか?
400:デフォルトの名無しさん
12/11/18 11:21:39.09
その説明だと
/<abc¥/>/
でいいんじゃねーのとしか読めないなw
401:デフォルトの名無しさん
12/11/18 11:41:03.34
ほれ
<[^<]*\/>
例であげてた<.*?\/>の?はなんか意味あるの?
402:デフォルトの名無しさん
12/11/18 11:44:52.55
質問者の環境で使えるかどうかは知らんが最小マッチな
403:デフォルトの名無しさん
12/11/18 12:03:56.89
>>401
できましたありがとうございます!
^は行頭の意味で覚えていたので思いつきませんでした…
?は一応、後ろの方に対して最小一致のつもりでした
404:デフォルトの名無しさん
12/11/18 12:37:00.59
量指定子のオプション ? が「ものぐさマッチ」である好例だね。
最小/最短という言葉だと、一番短くなる箇所でマッチするのかと誤解して覚えてしまう。
本当の最短マッチを探索する環境もあったような?
405:デフォルトの名無しさん
12/11/18 13:32:55.34
あー最小一致か。あったね、そういえば。
(個人的には)あんまり使わないからすっかり忘れてた
406:デフォルトの名無しさん
12/11/18 14:56:08.36
xxxは長さも値もランダムな文字列で
hoge+xxx/fuge+xxx/test+xxx
↓
hoge+xxx/fuge+xxx や hoge+xxx/test+xxx や fuge+xxx/test+xxx
としたいのですが、例えばfuge+xxx/test+xxxとしたいとき
hoge.+(/)?とやるとfugeもtestも削除されてしまうんですがどうすればいいのでしょうか?
.に/も含まれてしまうのが問題だと思うのですが
407:デフォルトの名無しさん
12/11/18 15:01:22.03
>>406
環境書いて欲しいところだが「.+」の代わりに
[^/]+
か
[^\/]+
でどうよ?
408:406
12/11/18 15:13:14.89
>>407
できました!ありがとうございます!
その考え方は無かったです
409:407
12/11/18 15:36:08.79
>>408
どういたしまして
ところで>>399と>>406は同一人物?