Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/
次スレは>>980宜しく
天ぷら等2以降
探検
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/03/15(水) 02:04:35.47ID:e01p03UP289デフォルトの名無しさん
2017/08/14(月) 20:33:03.02ID:89kehc6V290デフォルトの名無しさん
2017/08/14(月) 20:34:12.87ID:89kehc6V 半角文字列板でたまに見かけたような気が・・・
291デフォルトの名無しさん
2017/08/14(月) 20:39:37.25ID:j2odgQ2N もしくは
IDなしをNGにして、あぼーんのみ表示するとか
IDなしをNGにして、あぼーんのみ表示するとか
292デフォルトの名無しさん
2017/08/14(月) 20:59:49.60ID:89kehc6V >>291
すみません。今のところ該当スレが見つかりません。
目的としては、
優良エロ画像スレでたまにIDなしでグロ画像を貼る輩がいて、
IDなしのレスがほぼグロ画像ならIDなしをNGにするし、
IDなしでも優良エロ画像を貼ってくれてるならIDなしでもNGしないし・・・
という恥ずかしい理由なんです
すみません。今のところ該当スレが見つかりません。
目的としては、
優良エロ画像スレでたまにIDなしでグロ画像を貼る輩がいて、
IDなしのレスがほぼグロ画像ならIDなしをNGにするし、
IDなしでも優良エロ画像を貼ってくれてるならIDなしでもNGしないし・・・
という恥ずかしい理由なんです
293デフォルトの名無しさん
2017/08/14(月) 21:00:54.22ID:89kehc6V294デフォルトの名無しさん
2017/08/14(月) 21:04:32.71ID:j2odgQ2N >>292-293
ここ正規表現スレだからJane質問スレに来て
ここ正規表現スレだからJane質問スレに来て
295デフォルトの名無しさん
2017/08/21(月) 19:05:01.74ID:ToOu4wDd よろしければアドバイスください
●Regular Expressionの使用環境
正規表現で検索できるテキストエディタ
●検索か置換か?
検索
●説明
アンド検索で一つ目にマッチした文字列からn行以内にある二つ目の文字列までを抽出したい
●対象データ
林檎みかんバナナ
みかん林檎バナナ
林檎キウイみかん
バナナ林檎みかん
メロン林檎バナナ
メロンみかん林檎
みかんバナナ林檎
林檎みかんキウイ
林檎バナナみかん
●希望する結果
みかんバナナ
みかん林檎バナナ
林檎キウイ
●Regular Expressionの使用環境
正規表現で検索できるテキストエディタ
●検索か置換か?
検索
●説明
アンド検索で一つ目にマッチした文字列からn行以内にある二つ目の文字列までを抽出したい
●対象データ
林檎みかんバナナ
みかん林檎バナナ
林檎キウイみかん
バナナ林檎みかん
メロン林檎バナナ
メロンみかん林檎
みかんバナナ林檎
林檎みかんキウイ
林檎バナナみかん
●希望する結果
みかんバナナ
みかん林檎バナナ
林檎キウイ
296295
2017/08/21(月) 19:05:58.56ID:ToOu4wDd >>295の質問のつづきです
●自分で試したこと
今回は三行以内に「みかん」と「キウイ」の二つの文字列を含む部分 だけ を抽出したい
記述は以下のように書いてみたが、四行以上にまたがってマッチした部分まで抽出されてしまった
みかん([¥s¥S]*?)キウイ
●自分で試した検索ワード
「正規表現 複数行 文字列 検索 -秀丸」の組み合わせをいくつか試した
検索結果からプログラマーの質問回答サイトに飛んで似たように検索するも欲しい回答は見つからず
●自分で試したこと
今回は三行以内に「みかん」と「キウイ」の二つの文字列を含む部分 だけ を抽出したい
記述は以下のように書いてみたが、四行以上にまたがってマッチした部分まで抽出されてしまった
みかん([¥s¥S]*?)キウイ
●自分で試した検索ワード
「正規表現 複数行 文字列 検索 -秀丸」の組み合わせをいくつか試した
検索結果からプログラマーの質問回答サイトに飛んで似たように検索するも欲しい回答は見つからず
297デフォルトの名無しさん
2017/08/21(月) 21:48:45.68ID:EQVEvxNp n行なら可能だけどn行以内ってのは無理だと思う
つまり
1行の式|2行の式|…|n行の式
と書くしかないんじゃないかな
つまり
1行の式|2行の式|…|n行の式
と書くしかないんじゃないかな
298295
2017/08/21(月) 22:44:09.38ID:ToOu4wDd そうですか
やはり ([¥s¥S]*?) を使うのが間違ってますよね?
レスありがとうございます
やはり ([¥s¥S]*?) を使うのが間違ってますよね?
レスありがとうございます
299デフォルトの名無しさん
2017/08/21(月) 23:09:35.41ID:7hohe37q /みかん¥S*?¥n??¥S*?¥n??¥S*?キウイ/g
とか
/みかん(?:¥S*¥n?){0,2}¥S*キウイ/g
とかかな
1~3行目と6~8行目のみかん〜キウイがマッチする
とか
/みかん(?:¥S*¥n?){0,2}¥S*キウイ/g
とかかな
1~3行目と6~8行目のみかん〜キウイがマッチする
300デフォルトの名無しさん
2017/08/23(水) 21:18:57.34ID:a8dh4txw301デフォルトの名無しさん
2017/08/23(水) 23:01:36.58ID:bHZ6/xkT302デフォルトの名無しさん
2017/08/23(水) 23:56:43.55ID:v21fsY6g できないね
秀丸はマイナス検索では?
秀丸はマイナス検索では?
303デフォルトの名無しさん
2017/08/24(木) 22:00:31.43ID:vZuGMV9A できたよ
コピペしたときバックスラッシュが別の文字に変わっていたので、
そこだけ入力し直したけど
コピペしたときバックスラッシュが別の文字に変わっていたので、
そこだけ入力し直したけど
304デフォルトの名無しさん
2017/10/02(月) 15:17:50.91ID:uet6lO9o 二文字以上連続していない場合のみヒットする正規表現はどう書けばいいですか?
aを探すとして
"abc"のaはヒットする
"aabc"のaaは連続しているのでヒットしない
ということをしたいです
aを探すとして
"abc"のaはヒットする
"aabc"のaaは連続しているのでヒットしない
ということをしたいです
305デフォルトの名無しさん
2017/10/02(月) 15:33:07.99ID:MBLNVziv (?<!a)a(?!a)
306デフォルトの名無しさん
2017/10/02(月) 15:50:22.85ID:oE42sBRL aで固定って訳じゃなくて
bだけとかcだけとかも探したいのでは?
bだけとかcだけとかも探したいのでは?
307デフォルトの名無しさん
2017/10/02(月) 16:29:10.05ID:rrE28i3s 冷静なつっこみに受けた
308デフォルトの名無しさん
2017/10/02(月) 17:40:05.25ID:G/SyJC6m 単に見つけるだけなら
/(.)(?!\1)(.)(?!\2)/
で出来なくもない。
しかし、見つかったときは2文字マッチするパターンなので
全部見つけたい場合はそこを考慮する必要がある。
先頭の文字は見つけられないから別途
/^(.)(?!\1)/
のようにする必要があるだろう。
言語によってはもっとうまくできるかもしれない。
でも、for 文とかで探す方がいいと思うよ。
/(.)(?!\1)(.)(?!\2)/
で出来なくもない。
しかし、見つかったときは2文字マッチするパターンなので
全部見つけたい場合はそこを考慮する必要がある。
先頭の文字は見つけられないから別途
/^(.)(?!\1)/
のようにする必要があるだろう。
言語によってはもっとうまくできるかもしれない。
でも、for 文とかで探す方がいいと思うよ。
309デフォルトの名無しさん
2017/10/02(月) 18:33:11.59ID:G/SyJC6m /(.)(\1)*/
でマッチした長さが 1 だったらという考え方も出来るけど、どう?
でマッチした長さが 1 だったらという考え方も出来るけど、どう?
310デフォルトの名無しさん
2017/10/03(火) 03:04:28.76ID:FFksRFs1 /^(?!.*(.)\1).*/
311デフォルトの名無しさん
2017/10/11(水) 15:02:29.43ID:PTqhQudL ユニコード文字プロパティから
特定の文字のみを除外した文字の集合を
簡単に書く方法はあるでしょうか?
例えば \p{C} からタブ(\t)と改行コード(\n|\r)のみ除外したもの
特定の文字のみを除外した文字の集合を
簡単に書く方法はあるでしょうか?
例えば \p{C} からタブ(\t)と改行コード(\n|\r)のみ除外したもの
312デフォルトの名無しさん
2017/10/12(木) 22:03:36.05ID:iUceZ3nS >>311
(?![\n\r])\p{C}
(?![\n\r])\p{C}
313デフォルトの名無しさん
2017/10/14(土) 07:42:21.07ID:sv7zl76d 「"」以外の文字にマッチするが「\"」ならそれにもマッチする
ってどう書けばいいですか?
ってどう書けばいいですか?
314デフォルトの名無しさん
2017/10/14(土) 08:04:06.86ID:Wo1S3xrN >>313
([^"]|(?<=\\)")
([^"]|(?<=\\)")
315デフォルトの名無しさん
2017/10/14(土) 08:38:00.26ID:sv7zl76d ありがとうございます
知らない記号があるので勉強します
知らない記号があるので勉強します
316デフォルトの名無しさん
2017/10/14(土) 12:04:18.44ID:SVCVJk+z 正規表現を再利用したくて調べたんだができないんだな
itemcode:=/(S|T|U)\d{3}-\d{4}/
/^\s*\{itemcode}\s*$/
こういう仕様あっても全然いいと思うんだが仕様策定団体がサボったのか
itemcode:=/(S|T|U)\d{3}-\d{4}/
/^\s*\{itemcode}\s*$/
こういう仕様あっても全然いいと思うんだが仕様策定団体がサボったのか
317デフォルトの名無しさん
2017/10/14(土) 12:19:47.01ID:2Glba8SI 言語やエディタの機能で補完すれば?
変数に正規表現リテラルを格納して後で使えるようにするのは正規表現の枠をこえてる
変数に正規表現リテラルを格納して後で使えるようにするのは正規表現の枠をこえてる
318デフォルトの名無しさん
2017/10/14(土) 13:45:15.89ID:m/q/3Rhj >>316
そもそも正規表現の規格の枠外やん
Perlなら
my $itemcode = q/(S|T|U)\d{3}-\d{4}/;
my $regex = qq/^\s*{$itemcode}\s*$/;
$target =~ /$regex/;
とか出来たと思うが, $itemcodeも$regexも単に文字列だしな
そもそも正規表現の規格の枠外やん
Perlなら
my $itemcode = q/(S|T|U)\d{3}-\d{4}/;
my $regex = qq/^\s*{$itemcode}\s*$/;
$target =~ /$regex/;
とか出来たと思うが, $itemcodeも$regexも単に文字列だしな
319デフォルトの名無しさん
2017/10/14(土) 20:25:03.69ID:nyEdEfPd >>316
環境によるが、pcreを使っているプログラムなら、
(?(DEFINE)(?<name>pattern)...)で定義して(?&name)で使える。つまり、
/(?(DEFINE)(?<itemcode>(S|T|U)\d{3}-\d{4}))^\s*(?&itemcode)\s*$/
環境によるが、pcreを使っているプログラムなら、
(?(DEFINE)(?<name>pattern)...)で定義して(?&name)で使える。つまり、
/(?(DEFINE)(?<itemcode>(S|T|U)\d{3}-\d{4}))^\s*(?&itemcode)\s*$/
320デフォルトの名無しさん
2017/10/15(日) 12:04:10.87ID:xFgouCR2 正規表現技術入門って本買ったら初心者の入門書じゃなかった…
321デフォルトの名無しさん
2017/10/15(日) 23:07:27.13ID:/4ZFGRZX 後方参照っどこが後方やねん、後方で参照してるってことか?
と思っていたのですが、
左から右へと文字列を舐めていくカーソルの立場から見て後ろ、
という意味ですね?
と思っていたのですが、
左から右へと文字列を舐めていくカーソルの立場から見て後ろ、
という意味ですね?
322デフォルトの名無しさん
2017/10/16(月) 07:55:53.10ID:hhyAWPuR んだんだ
323デフォルトの名無しさん
2017/10/16(月) 10:07:29.75ID:ZoMoe7Af 上から下
324デフォルトの名無しさん
2017/10/16(月) 16:17:56.84ID:BvwEZWNg PCRE_EXTENDEDの説明に
この修飾子を設定すると、エスケープするか 文字クラスの内部を除き、
パターンの空白文字は完全に無視されます。
とありますが、
これはどういう時に使うのでしょうか?
空白文字を無視したいなら
最初からパターンに含めなければいいだけのような気がするのですが・・
この修飾子を設定すると、エスケープするか 文字クラスの内部を除き、
パターンの空白文字は完全に無視されます。
とありますが、
これはどういう時に使うのでしょうか?
空白文字を無視したいなら
最初からパターンに含めなければいいだけのような気がするのですが・・
325デフォルトの名無しさん
2017/10/16(月) 17:17:54.69ID:VwEzpL/B >>324
改行したりして可読性を高めたい時とか
改行したりして可読性を高めたい時とか
326デフォルトの名無しさん
2017/10/16(月) 17:31:22.40ID:BvwEZWNg327デフォルトの名無しさん
2017/10/18(水) 00:44:52.51ID:HJHK1SNa [$]
こういう文字クラスがあった場合、これは終端と解釈されますか?
それとも文字列の$と解釈されますか?
また、[\$] だった場合は挙動が変化しますか?
こういう文字クラスがあった場合、これは終端と解釈されますか?
それとも文字列の$と解釈されますか?
また、[\$] だった場合は挙動が変化しますか?
328デフォルトの名無しさん
2017/10/18(水) 01:19:34.59ID:GswCLlj6329デフォルトの名無しさん
2017/10/18(水) 01:39:24.99ID:HJHK1SNa ありがとうございます
やはり文字列なんですね
やはり文字列なんですね
330デフォルトの名無しさん
2017/10/20(金) 00:50:10.62ID:hFePCOoH 過去にAutohotkeyスレで正規表現自体の質問は正規表現スレに行けとあったのでこちらで質問させて下さい(巻き添えアク禁でソフトウェア板に書き込めません)。宜しくお願いします。
●Regular Expressionの使用環境
wikiより引用
>AutoHotkeyで用意されている正規表現は、Perl 5に搭載されているものと概ね互換のPCRE(Perl Compatible Regular Expressions)である
●検索か置換か?
検索
●説明
順不同の単語群のすべてを含む文字列の最長を検索し取り出したいです
●対象データ
var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列"
pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)", $)
MsgBox, pos=%pos% $=%$%
s)の意味はシングルラインモード
posはマッチした位置
$にはマッチした全体が入ります
これですと先頭の"位置"にマッチ(pos=1になります)するのでマッチした全体$は空になってしまいます
●希望する結果
$=クリスマス任意の文字列お盆任意の文字列正月
実際は長文の一部で単語群がもっと多いです
どの文字が先頭でどの文字が最後か不明のとき、これらの単語群がすべて含まれる文字列全体を取り出すにはどのように書いたら良いでしょうか
(クリスマス|お盆|正月).+(?1)
これですと正月という単語が含まれなくてもマッチしてしまいます
●Regular Expressionの使用環境
wikiより引用
>AutoHotkeyで用意されている正規表現は、Perl 5に搭載されているものと概ね互換のPCRE(Perl Compatible Regular Expressions)である
●検索か置換か?
検索
●説明
順不同の単語群のすべてを含む文字列の最長を検索し取り出したいです
●対象データ
var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列"
pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)", $)
MsgBox, pos=%pos% $=%$%
s)の意味はシングルラインモード
posはマッチした位置
$にはマッチした全体が入ります
これですと先頭の"位置"にマッチ(pos=1になります)するのでマッチした全体$は空になってしまいます
●希望する結果
$=クリスマス任意の文字列お盆任意の文字列正月
実際は長文の一部で単語群がもっと多いです
どの文字が先頭でどの文字が最後か不明のとき、これらの単語群がすべて含まれる文字列全体を取り出すにはどのように書いたら良いでしょうか
(クリスマス|お盆|正月).+(?1)
これですと正月という単語が含まれなくてもマッチしてしまいます
331デフォルトの名無しさん
2017/10/20(金) 02:08:00.45ID:yLtxI7rs >>330
>これらの単語群がすべて含まれる文字列全体を取り出すには
これらの単語群って、クリスマス・お盆・正月の3単語を指してるのかな?
それならダサいけど(クリスマス|お盆|正月)を3回繰り返せば?
https://regex101.com/r/yRw8ob/1
>これらの単語群がすべて含まれる文字列全体を取り出すには
これらの単語群って、クリスマス・お盆・正月の3単語を指してるのかな?
それならダサいけど(クリスマス|お盆|正月)を3回繰り返せば?
https://regex101.com/r/yRw8ob/1
332デフォルトの名無しさん
2017/10/20(金) 02:42:11.40ID:GaFTw98F333デフォルトの名無しさん
2017/10/20(金) 19:27:41.06ID:P/1hvwmS 2ch → 5chになったタイミングでアク禁って全解除されたと思うけど、また規制され始めたのかな?
334デフォルトの名無しさん
2017/10/20(金) 19:58:25.65ID:S6VTZkXa は?
335デフォルトの名無しさん
2017/10/20(金) 20:01:26.36ID:GaFTw98F アク禁は知らんけど、おπ規制だけは5chでは2chのを引き継いでないってことは言われてた
336330
2017/10/20(金) 20:06:35.04ID:JiGfFRv1 >>331
すみませんでした
(クリスマス|お盆|正月)の3つの単語を全て含む文字列の最長マッチと書くべきでした
(クリスマス|お盆|正月).*?(クリスマス|お盆|正月).*?(クリスマス|お盆|正月)
では最長3単語まででお盆という単語を含まなくてもマッチしてしまいます
>>332
>その2
というのが何をさすのかすみません分かりませんでした
var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;マッチ $=var全体
pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;行頭^記号ありでもマッチしました $=var全体
これでお盆が含まなければマッチせず、全ての単語が含まれるとき期待通りになりました。有難うございました
ただ、対象文字列の1文字目が(クリスマス|お盆|正月)以外で始まるケースではマッチしませんでした
最初に書いたこれなら1文字目を問わずマッチするのですがやはり全体が拾えず……。
pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)", $)
var := RegExReplace(var, "^.*?(?=クリスマス|お?盆|正月)", "")
のように1文字目が必ず指定した単語のどれかになるように修正してから使わせていただきます
お世話になりました。
すみませんでした
(クリスマス|お盆|正月)の3つの単語を全て含む文字列の最長マッチと書くべきでした
(クリスマス|お盆|正月).*?(クリスマス|お盆|正月).*?(クリスマス|お盆|正月)
では最長3単語まででお盆という単語を含まなくてもマッチしてしまいます
>>332
>その2
というのが何をさすのかすみません分かりませんでした
var := "クリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;マッチ $=var全体
pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;行頭^記号ありでもマッチしました $=var全体
これでお盆が含まなければマッチせず、全ての単語が含まれるとき期待通りになりました。有難うございました
ただ、対象文字列の1文字目が(クリスマス|お盆|正月)以外で始まるケースではマッチしませんでした
最初に書いたこれなら1文字目を問わずマッチするのですがやはり全体が拾えず……。
pos := RegExMatch(var, "s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)", $)
var := RegExReplace(var, "^.*?(?=クリスマス|お?盆|正月)", "")
のように1文字目が必ず指定した単語のどれかになるように修正してから使わせていただきます
お世話になりました。
337デフォルトの名無しさん
2017/10/20(金) 20:21:51.48ID:GaFTw98F 先頭に^を付けたらダメだろ
^は文頭の位置を表す記号なんだから
^は文頭の位置を表す記号なんだから
338デフォルトの名無しさん
2017/10/20(金) 20:23:53.34ID:JiGfFRv1 pos := RegExMatch(var, "s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))", $)
MsgBox, %$1%
すみませんこれで1文字目不問で取り出せました
長文失礼しました
MsgBox, %$1%
すみませんこれで1文字目不問で取り出せました
長文失礼しました
339デフォルトの名無しさん
2017/10/20(金) 20:27:40.74ID:GaFTw98F340デフォルトの名無しさん
2017/10/20(金) 20:41:25.29ID:JiGfFRv1 説明下手ですみません
var := "zzあzzzいzzzうzzzうzzあzzいzz"
最初に見つかる(あ|い|う)のどれかから
最後に見つかる(あ|い|う)のどれかまで
かつ(あ|い|う)すべての語が含まれる文字列を取り出したかった
アク禁じゃなくスマホ回線だからかも知れません
var := "zzあzzzいzzzうzzzうzzあzzいzz"
最初に見つかる(あ|い|う)のどれかから
最後に見つかる(あ|い|う)のどれかまで
かつ(あ|い|う)すべての語が含まれる文字列を取り出したかった
アク禁じゃなくスマホ回線だからかも知れません
341デフォルトの名無しさん
2017/10/20(金) 22:48:55.52ID:yLtxI7rs342デフォルトの名無しさん
2017/10/21(土) 00:17:18.52ID:jXM7J8Fl こういうのはどうかな
(?=.*クリスマス)(?=.*お盆)(?=.*正月)(?:クリスマス|お盆|正月).*(?:クリスマス|お盆|正月)
(?=.*クリスマス)(?=.*お盆)(?=.*正月)(?:クリスマス|お盆|正月).*(?:クリスマス|お盆|正月)
343デフォルトの名無しさん
2017/10/21(土) 00:21:45.84ID:jXM7J8Fl344デフォルトの名無しさん
2017/10/21(土) 00:33:00.59ID:ZBz0JWdz **クリスマス**クリスマス**正月**お盆**お盆**
だったら最初と最後の**を抜かして
クリスマス**クリスマス**正月**お盆**お盆
にマッチさせたいって話なの?
あとシングルラインモード使ってるから
複数行にわたってマッチさせたいんだよね?
↓こういうの
**クリスマス**
**クリスマス**正月**
**正月**お盆**
だったら最初と最後の**を抜かして
クリスマス**クリスマス**正月**お盆**お盆
にマッチさせたいって話なの?
あとシングルラインモード使ってるから
複数行にわたってマッチさせたいんだよね?
↓こういうの
**クリスマス**
**クリスマス**正月**
**正月**お盆**
345デフォルトの名無しさん
2017/10/21(土) 00:33:20.08ID:ZBz0JWdz アスタリスク見にくいな
346338
2017/10/21(土) 02:32:45.68ID:o7hEIA7f >>342,343
AutoHotkey v1.1.26.01(最新) Unicode版ですがやはり先頭が別の文字列だとマッチしません
var := "zzzクリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;pos=0 マッチしません
>>338の正規表現ならpos=1で最初に見つかるクリスマスから最後の盆まで取り出せました
>>344
その通りです>>340より分かりやすい説明が思いつきません
AutoHotkey v1.1.26.01(最新) Unicode版ですがやはり先頭が別の文字列だとマッチしません
var := "zzzクリスマス任意の文字列お盆任意の文字列正月任意の文字列お盆任意の文字列正月任意の文字列クリスマスzzzz盆zzzzz盆zzzzzzz盆zzzzzzzzzzzお盆"
pos := RegExMatch(var, "s)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)", $)
MsgBox,,, pos%pos% %$%, ;pos=0 マッチしません
>>338の正規表現ならpos=1で最初に見つかるクリスマスから最後の盆まで取り出せました
>>344
その通りです>>340より分かりやすい説明が思いつきません
347デフォルトの名無しさん
2017/10/21(土) 12:04:21.32ID:Awu3DWjD "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)"
>>346
気持ち悪いから試してみた
"s)(?=盆)盆"→マッチする
"s)(?=.*?盆)盆"→マッチしない←?!?!
"s).(?=.*?盆)盆"→する
"s)(?=.)(?=.*?盆)盆"→する
"s)(?:)(?=.*?盆)盆"→する
s)と(?=.*の間に何かを挿めば何故か回避できそう?
"s)(?:)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)"
>>346
気持ち悪いから試してみた
"s)(?=盆)盆"→マッチする
"s)(?=.*?盆)盆"→マッチしない←?!?!
"s).(?=.*?盆)盆"→する
"s)(?=.)(?=.*?盆)盆"→する
"s)(?:)(?=.*?盆)盆"→する
s)と(?=.*の間に何かを挿めば何故か回避できそう?
"s)(?:)(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)"
348338
2017/10/21(土) 17:14:22.52ID:o7hEIA7f >>347
すごい!>>346のvar文字列に対しpos=4で最も理想的な形でとれました!
pos := RegExMatch(var, "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)", $)
MsgBox,,, pos%pos% %$%, ;pos=4 $=最初のクリスマスから最後の盆
s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)
この正規表現の出所はスマホアプリ板2chmate質問スレのテンプレにあるNGワードで
2chmateのシングルラインモードは(?s:ここに正規表現)と書くようです
その辺のやりとりが過去スレ
http://itest.5ch.net/potato/test/read.cgi/applism/1474912259/893-n
にありました
>893
>複数のワードを全て含む書き込みをNG
>(?s:^(?=.*ワード1)(?=.*ワード2)(?=.*ワード3))
>これがどうしても分からん(なぜワードの順番を入れ換えてもマッチするのか)
>
>895
>ワード1を先読みしてそれを含む^にマッチ
>ワード2を先読みしてそれを含む^(?=.*ワード1)にマッチ
>ワード3を先読みしてそれを含む^(?=.*ワード1)(?=.*ワード2)にマッチ
>
>896
>例えば「(先頭)あいうえお」という文字列に^(?=.*うえお)でサーチかける場合
>^(?=.*うえお)は「.*うえお」が続く^のみにマッチするから「うえお」を含む「(先頭)」にマッチ
>つまりこれを何度やっても^に戻ってくる
>で、先読みがどこかで失敗したらそこで成立しなくなるというカラクリ
すごい!>>346のvar文字列に対しpos=4で最も理想的な形でとれました!
pos := RegExMatch(var, "s)(?=((お?+盆)|(クリスマス)|(正月)))(?=.*(?2))(?=.*(?3))(?=.*(?4)).*(?1)", $)
MsgBox,,, pos%pos% %$%, ;pos=4 $=最初のクリスマスから最後の盆
s)^(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)
この正規表現の出所はスマホアプリ板2chmate質問スレのテンプレにあるNGワードで
2chmateのシングルラインモードは(?s:ここに正規表現)と書くようです
その辺のやりとりが過去スレ
http://itest.5ch.net/potato/test/read.cgi/applism/1474912259/893-n
にありました
>893
>複数のワードを全て含む書き込みをNG
>(?s:^(?=.*ワード1)(?=.*ワード2)(?=.*ワード3))
>これがどうしても分からん(なぜワードの順番を入れ換えてもマッチするのか)
>
>895
>ワード1を先読みしてそれを含む^にマッチ
>ワード2を先読みしてそれを含む^(?=.*ワード1)にマッチ
>ワード3を先読みしてそれを含む^(?=.*ワード1)(?=.*ワード2)にマッチ
>
>896
>例えば「(先頭)あいうえお」という文字列に^(?=.*うえお)でサーチかける場合
>^(?=.*うえお)は「.*うえお」が続く^のみにマッチするから「うえお」を含む「(先頭)」にマッチ
>つまりこれを何度やっても^に戻ってくる
>で、先読みがどこかで失敗したらそこで成立しなくなるというカラクリ
349338
2017/10/21(土) 17:15:24.33ID:o7hEIA7f s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))
AutoHotkeyシングルラインモードでは正規表現の先頭に「^」が有っても無くても先頭からマッチするので
.*?(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月) ;<----ここで先頭にマッチ(1)
(?:お?盆|クリスマス|正月) ;<----先頭に続く最初に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(2)
.*(?:お?盆|クリスマス|正月) ;<----(2)に続く最後に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(3)となるようです
s)と(?=.*?の間に最短0文字表現を入れないとマッチしないのはもしかしてバグなんでしょうかね
AutoHotkeyシングルラインモードでは正規表現の先頭に「^」が有っても無くても先頭からマッチするので
.*?(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月) ;<----ここで先頭にマッチ(1)
(?:お?盆|クリスマス|正月) ;<----先頭に続く最初に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(2)
.*(?:お?盆|クリスマス|正月) ;<----(2)に続く最後に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(3)となるようです
s)と(?=.*?の間に最短0文字表現を入れないとマッチしないのはもしかしてバグなんでしょうかね
350デフォルトの名無しさん
2017/10/24(火) 15:16:03.89ID:5n0ye5v7 すみません。
自分で書いた正規表現が期待通り動いたのですが理由が分かりません。
どなたか解説お願いします。
Notepad++の置換で、こんなデータに対して
<abcde> <hijk>
<abc> <XYZ>
<dfg>
検索文字列 (?:\s*<([^<>]*)>)?\s*<([^<>]*)>
置換文字列 [$1]\t[$2]\r\n
で置換して、結果がこうなりました。
[abcde] [hijk]
[abc] [XYZ]
[] [dfg]
この三行目の動作なんですが、一行に一個しかデータが無い場合には、二番目のデータとしてキャプチャしたかったので
この動きで良いのですが、なぜこれが出来たのが分かりません。
検索文字列の一つ目の丸カッコの (?:・・・)? <== この量指定子?がそう言う動作になるのでしょうか?
そうだとしたら、なぜそうなるのでしょうか?
あるいはもっと簡潔なパターンはありますか?
宜しくお願い致します。
自分で書いた正規表現が期待通り動いたのですが理由が分かりません。
どなたか解説お願いします。
Notepad++の置換で、こんなデータに対して
<abcde> <hijk>
<abc> <XYZ>
<dfg>
検索文字列 (?:\s*<([^<>]*)>)?\s*<([^<>]*)>
置換文字列 [$1]\t[$2]\r\n
で置換して、結果がこうなりました。
[abcde] [hijk]
[abc] [XYZ]
[] [dfg]
この三行目の動作なんですが、一行に一個しかデータが無い場合には、二番目のデータとしてキャプチャしたかったので
この動きで良いのですが、なぜこれが出来たのが分かりません。
検索文字列の一つ目の丸カッコの (?:・・・)? <== この量指定子?がそう言う動作になるのでしょうか?
そうだとしたら、なぜそうなるのでしょうか?
あるいはもっと簡潔なパターンはありますか?
宜しくお願い致します。
351デフォルトの名無しさん
2017/10/24(火) 15:43:41.40ID:JVoqQJo1 $1と$2が存在するという前提で置換しておきながら$1は?で消えるかもと指定してるから
$1が無いパターンにマッチしたと判断された(適当)
$1が無いパターンにマッチしたと判断された(適当)
352デフォルトの名無しさん
2017/12/01(金) 00:01:15.16ID:J9gYbH6z Spam Mail Killerの正規表現についてすみませんがご教示ください。
メールアドレスに同じドメインのアドレスを複数(たとえば3個以上)含む、という場合
例えばですが
abc@uvw-xyz.com, defg123@uvw-xyz.com, hi456@uvw-xyz.com
このようなアドレスをひとくくりに探し出すにはどのようにすればいいでしょうか?
##/(?=.*@uvy-xyz\.com){3,}/km
とやってみましたがうまく動きませんでした。
正規表現って難しい・・・
メールアドレスに同じドメインのアドレスを複数(たとえば3個以上)含む、という場合
例えばですが
abc@uvw-xyz.com, defg123@uvw-xyz.com, hi456@uvw-xyz.com
このようなアドレスをひとくくりに探し出すにはどのようにすればいいでしょうか?
##/(?=.*@uvy-xyz\.com){3,}/km
とやってみましたがうまく動きませんでした。
正規表現って難しい・・・
353デフォルトの名無しさん
2017/12/01(金) 00:27:29.48ID:lY+8fymW (.+?@uvw-xyz.com){3,}
354デフォルトの名無しさん
2017/12/01(金) 00:37:36.11ID:J9gYbH6z355デフォルトの名無しさん
2017/12/01(金) 01:38:11.93ID:4kQewCo+ ([\w\d._-]+?@uvw-xyz\.com, ){2,}[\w\d._-]+?@uvw-xyz\.com
冗長だけど、とりあえずこれならどのアプリでも動くはず
冗長だけど、とりあえずこれならどのアプリでも動くはず
357デフォルトの名無しさん
2017/12/01(金) 14:56:42.38ID:GNYmtVXo ([\w\d._-]+?@uvw-xyz\.com(,\s?)?){3,}
メールアドレスに注目するなら、これでもいいかな
メールアドレスに注目するなら、これでもいいかな
358デフォルトの名無しさん
2017/12/01(金) 15:03:45.52ID:GNYmtVXo スペースのパターンも考慮すると、こちらのほうがいいかも
([\w\d._-]+?@uvw-xyz\.com(,\s*)?){3,}
([\w\d._-]+?@uvw-xyz\.com(,\s*)?){3,}
359デフォルトの名無しさん
2017/12/01(金) 19:07:13.56ID:lDYRmGG1 拘り始めるときりがない
複数の記述方法があるしそれで制限も変わる
https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9
軽く「正規表現 メールアドレス」でググればメールアドレスを糞まじめに正規表現で頑張る意味がないのが頭の5個も読めば理解できるでしょ
依頼者がとりあえず解決したと言ってるんだからこれ以上は現状不要だよ
複数の記述方法があるしそれで制限も変わる
https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9
軽く「正規表現 メールアドレス」でググればメールアドレスを糞まじめに正規表現で頑張る意味がないのが頭の5個も読めば理解できるでしょ
依頼者がとりあえず解決したと言ってるんだからこれ以上は現状不要だよ
360352
2017/12/01(金) 23:13:24.55ID:J9gYbH6z361デフォルトの名無しさん
2017/12/02(土) 07:41:29.80ID:dQK/O/Fy362デフォルトの名無しさん
2017/12/02(土) 09:41:49.64ID:mi+Z/zsa >>360
横槍だけど358は最初に与えられた条件(3回出現)と違って3回“連続”出現だから留意してね
そして\wは\d_を含んでいるからまだ冗長だ、ついでに+?の?も{3,}の,もシンプルじゃないね
最初の質問の=を:にするだけでよかったと思うよ
^(?>.*?@uvy-xyz\.com){3}
横槍だけど358は最初に与えられた条件(3回出現)と違って3回“連続”出現だから留意してね
そして\wは\d_を含んでいるからまだ冗長だ、ついでに+?の?も{3,}の,もシンプルじゃないね
最初の質問の=を:にするだけでよかったと思うよ
^(?>.*?@uvy-xyz\.com){3}
363デフォルトの名無しさん
2017/12/02(土) 10:25:05.48ID:hDsQS9Tu 依頼者が充足宣言してるのにね
364デフォルトの名無しさん
2017/12/02(土) 10:49:44.12ID:SQFbqxvb 正規表現の難しいところは引き際。いろんな意味で。
365デフォルトの名無しさん
2017/12/02(土) 20:04:53.17ID:aLfswfyL 質問がメインのスレじゃないんだから、
探究することは悪いことじゃないよ。
探究することは悪いことじゃないよ。
366デフォルトの名無しさん
2017/12/02(土) 20:22:17.17ID:P9eUjlcX なにいってんだこいつ?
1
> 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
2 質問テンプレ
1
> 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
2 質問テンプレ
367デフォルトの名無しさん
2017/12/02(土) 20:32:56.34ID:+fOAFawt > 質問する場合は
 ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄
368デフォルトの名無しさん
2017/12/02(土) 22:11:28.09ID:oKFwf0E4 ほとんど質問がルートのレスツリーばかり
テンプレも質問がらみばかり
引き際誤るとここまで人はみっともなくなれるのか
テンプレも質問がらみばかり
引き際誤るとここまで人はみっともなくなれるのか
369デフォルトの名無しさん
2017/12/02(土) 22:44:47.63ID:1qjImk2p 自己紹介乙
370デフォルトの名無しさん
2017/12/02(土) 23:58:10.96ID:NhirO4Ud 引き際重要
371デフォルトの名無しさん
2017/12/10(日) 08:22:53.66ID:DxswVEqC Google Apps Scriptで、下記の時系列データを配列で取得したいのだけど、どうしたら良いですか?
https://www.morningstar.co.jp/RankingWeb/IndicesPart.do?indcCode=15
https://www.morningstar.co.jp/RankingWeb/IndicesPart.do?indcCode=15
372デフォルトの名無しさん
2017/12/10(日) 17:27:12.44ID:UOQUQi73 どこまでやりましたか
373デフォルトの名無しさん
2017/12/10(日) 18:40:59.63ID:DxswVEqC あとは正規表現のとこだけです。
<tr>
<td class="center">12/08</td>
<td class="center">169</td>
<td class="center">17</td>
<td class="center"> </td>
<td class="center">26</td>
</tr>
<tr>
<td class="center">12/08</td>
<td class="center">169</td>
<td class="center">17</td>
<td class="center"> </td>
<td class="center">26</td>
</tr>
374デフォルトの名無しさん
2017/12/11(月) 00:06:26.95ID:4q7JrCp0 jQuery のセレクターを使え
$('td.center').text()
$('td.center').text()
375デフォルトの名無しさん
2017/12/11(月) 01:01:11.97ID:06if4WxO376デフォルトの名無しさん
2017/12/11(月) 07:53:34.73ID:HLwn5MaC 急にHTMLパーサなんて言われてもチンプンカンプンやわ
377デフォルトの名無しさん
2017/12/11(月) 09:34:01.52ID:78kXJ+6a すぐできるだろうと思って泥沼にハマることが多いわ、こりだすとキリがないわで、あきらめどころが難しいのが正規表現。
自分の中で制限時間(10分など。忙しさによる)を設けて、
それ以上時間がかかる場合は正規表現による解決するのをあきらめるってのが、運用上は合理的だろうね。
正規表現そのものの学習・調査をしたい場合は、もちろん違うが。
このスレの客層はどっちなのってことなのかな。
自分の中で制限時間(10分など。忙しさによる)を設けて、
それ以上時間がかかる場合は正規表現による解決するのをあきらめるってのが、運用上は合理的だろうね。
正規表現そのものの学習・調査をしたい場合は、もちろん違うが。
このスレの客層はどっちなのってことなのかな。
378デフォルトの名無しさん
2017/12/11(月) 14:24:59.19ID:HLwn5MaC jQueryやらHTMLパーサやら能書きばっかり
正規表現で出来たから、もうええわ
正規表現で出来たから、もうええわ
379デフォルトの名無しさん
2017/12/12(火) 00:30:19.52ID:u8BojTW8380デフォルトの名無しさん
2017/12/14(木) 17:08:16.97ID:lv6L9acp Perl互換ですが,
ファイルの先頭から末尾までをマッチさせる,つまりファイルのテキストを全部取得するにはどう書いたらいいのでしょうか?
ファイルの先頭から末尾までをマッチさせる,つまりファイルのテキストを全部取得するにはどう書いたらいいのでしょうか?
381デフォルトの名無しさん
2017/12/14(木) 17:36:18.19ID:lv6L9acp 解決しました
([\s\S]*)で出来ました.
([\s\S]*)で出来ました.
382デフォルトの名無しさん
2017/12/16(土) 03:31:44.42ID:ArLhqftT 正規表現は構文解析器(parser)じゃないから、
XML, HTML のように、文書に構造があるものは解析できない。バグる
例えば、コメント部に、
<td
と書かれていても、正規表現では該当してしまう
それに要素間に、祖先・子孫などの関係があって、入れ子構造になるから、
開始・終了タグが一致しない
XML, HTML のように、文書に構造があるものは解析できない。バグる
例えば、コメント部に、
<td
と書かれていても、正規表現では該当してしまう
それに要素間に、祖先・子孫などの関係があって、入れ子構造になるから、
開始・終了タグが一致しない
383デフォルトの名無しさん
2017/12/18(月) 22:01:18.38ID:fLY/8wUq バックスラッシュt、でいいやろ
384デフォルトの名無しさん
2017/12/18(月) 23:20:44.39ID:LMSHu3dl 正規表現でできることできないことの見極めが難しい。
うまくできない原因が、自分の未熟によるものか、そもそも誰がやろうが無理なのか、という見極め。
これは正規表現に限った話でないが、正規表現を使っていると遭遇することが非常に多い。
うまくできない原因が、自分の未熟によるものか、そもそも誰がやろうが無理なのか、という見極め。
これは正規表現に限った話でないが、正規表現を使っていると遭遇することが非常に多い。
385デフォルトの名無しさん
2017/12/18(月) 23:31:28.83ID:Xb/4cQMD 自分が使ってる範囲で使えるものか完璧を目指すかで違ってくるよ
386デフォルトの名無しさん
2017/12/25(月) 17:59:18.23ID:9hKP95Nk もはや姓のサイトウ(斉藤、齊藤など)に適した検索方法って正規表現ぐらいじゃね?
プレス発表 「文字情報基盤整備事業」で推進していた漢字6万文字の国際規格化が完了:IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/about/press/20171225.html
プレス発表 「文字情報基盤整備事業」で推進していた漢字6万文字の国際規格化が完了:IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/about/press/20171225.html
387デフォルトの名無しさん
2017/12/25(月) 18:01:37.66ID:9hKP95Nk というか外字だとマルチプラットホーム対応した検索アルゴリズムを作ることが困難だったので、国際規格化されただけまだマシか。
388デフォルトの名無しさん
2017/12/25(月) 22:40:21.08ID:8yZmKHLj■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★6 [BFU★]
- 中国側が首相答弁の撤回要求、日本側拒否★2 [夜のけいちゃん★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 日本人にゲームでキャラメイクさせると鼻が棒みたいになるよな 異常に小鼻を憎んでるよなキモオタって [817148728]
- 鈴木農水大臣「コメの価格が上がってるのは新米に切り替わったからです」 [256556981]
- ホテル業界、高市のせいで中国から大量キャンセル 「大変厳しい状態。一刻も早い収束を願います」 [271912485]
- 【正論】玉木雄一郎「高市さんの答弁は米軍が攻撃を受けた場合を前提としており、撤回するのは難しい」特定野党を完全論破 [519511584]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- んなり放題🍬のお🏡
