[過去ログ]
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489511075/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
338: デフォルトの名無しさん [sage] 2017/10/20(金) 20:23:53.34 ID:JiGfFRv1 pos := RegExMatch(var, "s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月))", $) MsgBox, %$1% すみませんこれで1文字目不問で取り出せました 長文失礼しました http://mevius.5ch.net/test/read.cgi/tech/1489511075/338
346: 338 [sage] 2017/10/21(土) 02:32:45.68 ID: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より分かりやすい説明が思いつきません http://mevius.5ch.net/test/read.cgi/tech/1489511075/346
348: 338 [sage] 2017/10/21(土) 17:14:22.52 ID: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 >例えば「(先頭)あいうえお」という文字列に^(?=.*うえお)でサーチかける場合 >^(?=.*うえお)は「.*うえお」が続く^のみにマッチするから「うえお」を含む「(先頭)」にマッチ >つまりこれを何度やっても^に戻ってくる >で、先読みがどこかで失敗したらそこで成立しなくなるというカラクリ http://mevius.5ch.net/test/read.cgi/tech/1489511075/348
349: 338 [sage] 2017/10/21(土) 17:15:24.33 ID:o7hEIA7f s).*?((?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月)(?:お?盆|クリスマス|正月).*(?:お?盆|クリスマス|正月)) AutoHotkeyシングルラインモードでは正規表現の先頭に「^」が有っても無くても先頭からマッチするので .*?(?=.*?お?盆)(?=.*?クリスマス)(?=.*?正月) ;<----ここで先頭にマッチ(1) (?:お?盆|クリスマス|正月) ;<----先頭に続く最初に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(2) .*(?:お?盆|クリスマス|正月) ;<----(2)に続く最後に見つかる(?:お?盆|クリスマス|正月)のどれかにマッチ(3)となるようです s)と(?=.*?の間に最短0文字表現を入れないとマッチしないのはもしかしてバグなんでしょうかね http://mevius.5ch.net/test/read.cgi/tech/1489511075/349
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.041s