Regular Expression(正規表現) Part16

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/11/03(水) 19:50:01.71ID:ebAE+z9+
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part15
https://mevius.5ch.net/test/read.cgi/tech/1568640311/


次スレは>>980宜しく
天ぷら等>>2以降
2022/01/02(日) 00:24:32.24ID:1LGQCNAT
テンプレを読めるようになってから出直そう
2022/01/02(日) 01:16:44.72ID:xTWkFa8M
Onigmo の非包含オペレータのバグを再現する方法
https://github.com/tonco-miyazawa/regex_etc/blob/master/Absence_reappear_bug.txt

>>152 正規表現エンジンは何?
2022/01/02(日) 01:27:24.76ID:4Qt0RmdX
(?<=^2022-01-01).++$
2022/01/02(日) 02:23:07.29ID:q3p7RZao
なんで強欲?
2022/01/03(月) 03:43:07.67ID:BhOVhgCg
サクラエディタおじさんなのだが
よほど古くなければ検索文字数に上限はほぼない
ただし履歴とウインドウ間共有には259文字の上限がある
再利用にはマクロにしておくべし
あとWindowsダイアログの1行エディットコントロールには文字列幅が32767pxを超えると真っ白になるバグがある
正規表現キーワードは1000文字
2022/01/03(月) 19:36:44.28ID:X+IIU15J
今時の正規表現エンジンを使えるエディタなら3000文字くらいは許容して欲しい
欲を言えば正規表現をテキストエディタ画面で作ってそのまま実行出来るように
なったらいいな、/x オプションが設定されるのがデフォで・・

Jane用に作った鬼雲用の正規表現は1600文字超だった
https://github.com/tonco-miyazawa/regex_etc/blob/master/ReplaceStr_Part11_res549.txt
2022/01/03(月) 21:53:14.12ID:Pucsg4jY
常用漢字表外漢字を検索する正規表現をお願いします!
2022/01/03(月) 23:25:26.42ID:Rgi2CjE6
テキストエディタをまた〜り語ろう ver.25
https://pc11.2ch.net/test/read.cgi/software/1201173972/193

193 174 sage 2008/02/19(火) 03:19:25 ID:W6zn4Vm/0
K2Editorが検索テキストボックスに20000桁超の文字列入れられるから
正規表現「|」でつないだOR検索するのに便利ってだけなんだけどね
(秀丸はそもそもOR検索で「|」が10個くらいまでしか使えないという制限がある
サクラエディタは検索条件テキストボックスに258桁までしか入力できない)

他にはEmEditorが優秀な部類で検索条件に数千桁までは指定できたんだけど、
20000桁はさすがに無理でしたw
2022/01/04(火) 16:23:29.29ID:oLEgCIB5
2万文字じゃなくて2万桁か、入力して検索ボタン押したらエディタが凍りそう
こういうのをエディタでやろうとする人はスクリプト書けない人なのかな
2022/01/04(火) 16:26:30.10ID:3hJH9p5O
変な使い方すんなし
2022/01/05(水) 02:42:52.49ID:PfznQmjq
emEditorちゃんの新しいアピールポイント発見されたやん
作者さんに伝えたら喜ぶぞお〜
2022/01/05(水) 03:17:14.08ID:rvz1fckd
otbeditをアップデートしたら正規表現が進化しててびっくりしたな
\=A で "選択範囲の先頭にマッチ" みたいな独自のものもあって面白い
ただ正規表現の入力ダイアログは変わってなさそう
複雑な正規表現を使うならperlでやっちゃうから結局は使わないんだけどね
2022/01/15(土) 15:07:39.96ID:LSXPKCTg
鬼車の更新きた、が>>137の件はそのままだった
作者氏のブログを読んでたらいつの間にか下山事件について調べてたw
この事件があったことは前に国鉄事故一覧を読んでたから知ってたけど
ミステリー要素に興味が無い自分はスルーしてた
2022/01/15(土) 20:13:16.46ID:YXcsuWEv
5chで化けるキャリア絵文字をNGにしたいんだけど、もっとマシな書き方ある?

&(hearts|#[0-9]{3,6});(?# キャリア絵文字NG)
2022/01/16(日) 21:51:20.72ID:9z0xsGVh
(^&clubs;^)
2022/01/17(月) 07:41:03.81ID:a00LkpSK
>>165
kkosさんが5ちゃんねる見てるという情報はないしねえ
ちなみにk.takataさんの方はサクラエディタスレでbregonig.dllのデバッグ進めてたこともあるし
このスレ見てても不思議ではない
2022/01/17(月) 20:57:45.62ID:JTE3FsjP
>>168
kosako先生もブログのログによると2chをチェックされてたことが
あるようだけど今は見てないようですね
>>137程度のことでgithubに書き込むのは敷居が高いな・・
takata先生のほうはツイッターやメールで簡単に連絡取れるんですけどね

これからonigurumaをいじり倒す予定なので他に何かバグを見つけたら
一緒に報告しようと思います^^;
2022/01/21(金) 06:38:47.99ID:sXrjqYWb
Rubyの闇
https://kkos.hatenadiary.org/entry/20070525/1180100250
2022/01/21(金) 18:07:28.01ID:kuE6phYE
闇でもなんでもなく松本の狭量さを示す事実だけだろ
2022/01/21(金) 18:44:15.58ID:0+co4YWB
onigurumaの話題を出すとこうなってしまうんならよそでやるか・・
ここでの書き込みはこれが最後です、スレ汚しすみませんでした
173170
垢版 |
2022/01/21(金) 19:13:35.61ID:sXrjqYWb
>>172
私の方こそすみません
170は書くべきじゃありませんでした
個人的にtoncoさん(ですよね?)の書き込み好きなので
5chでonigurumaやonigmoの検証続けて下さい
174170
垢版 |
2022/01/21(金) 19:16:55.46ID:sXrjqYWb
ちなみにこのツイートかなり気になります
Rubyの正規表現エンジンを鬼雲から鬼車に戻す構想があるのかな?
https://twitter.com/kokuyouwind/status/1436202765101928461

P.S.
ツイートは鬼雲(Onigmo)のスペルを間違えています
https://twitter.com/5chan_nel (5ch newer account)
2022/01/22(土) 01:55:21.54ID:OtRmDEvF
rubyは内部のエンコーディングを固定してないそうだから鬼車系から離れられないんじゃないか
re2はutf-8/iso-8859-1の2択だし
2022/01/22(土) 18:56:13.90ID:UcGEJ67s
いろいろあるんだな
2022/01/24(月) 20:07:59.38ID:nkigtwKI
メモ
https://regex101.com/
https://rubular.com/
https://ideone.com/

https://developer.android.com/reference/java/util/regex/Pattern
2022/01/24(月) 23:09:01.61ID:Kqmt+jMz
すみません空行を表すモノは「^\n」以外に何かありますでしょうか?
2022/01/24(月) 23:16:14.46ID:6TTx6Dab
言葉不足すぎて何も言えない
>>2のテンプレ通り書いて
2022/01/24(月) 23:35:46.42ID:9KZ/AsJf
^$ とか?
2022/01/25(火) 00:03:53.36ID:aASmTB60
\n{2,}
(?<=\n)\n+
2022/01/25(火) 00:05:00.68ID:FywNzPTU
>>179
すみません

●Regular Expressionの使用環境
会社(工場)で使っている親会社の人が作ったソフトに内蔵されているエディタです
特殊な用途で使うもので制作者に問い合わせは出来るけれど聞くところによりますと
Delphi純正の正規表現ライブラリでは「^\n」がヒットしないらしいです
TPerlRegEx という名前らしいので恐らく Perl 準拠らしい、です
「^」や「\n」と他の組み合わせは問題ないです

●検索か置換か?
検索も置換もです

●説明
空行を検索したい

●対象データ
複数行あるテキストデータです

>>180
「^$」は文頭にしかヒットしませんでした
2022/01/25(火) 00:06:24.26ID:FywNzPTU
>>181
うわ凄っ
(?<=\n)\n+
でヒットしました!


唐突でわちゃくちゃな質問におつきあいありがとうございました
2022/01/25(火) 00:15:07.84ID:/DnSxEx4
(?m)^\n
2022/01/25(火) 13:46:33.02ID:PQbOJgVd
解決してなによりだけど
親会社が作った特殊ソフトとか
親会社の担当に聞くべき案件なのでは
2022/01/29(土) 12:49:12.10ID:yDE0S1/7
JaneStyle
【 正規表現ライブラリ 】 bregonig.dll Ver.1.46 with Oniguruma 5.9.2

検索

競馬 競輪 競艇 競泳

競(?:馬|輪|艇|泳)
競[馬輪艇泳]

この場合 上、式集合 と 下、文字集合 どちらが好ましいでしょうか
187186
垢版 |
2022/01/29(土) 13:01:44.15ID:yDE0S1/7
検索文字が増えていくので処理速度で考えるとどちらが速いでしょうか
2022/01/29(土) 13:32:54.07ID:HGXegLzO
予想でしかないけどパースは文字集合の方が簡単だろうし動作も文字集合の方が軽い気がする
基本的に出来ることが少ない方が処理は楽だから
まあよほど大量の文書を処理しないと認識できる違いが出るとは思えないけど
2022/01/29(土) 14:55:24.78ID:yDE0S1/7
>>188
ありがとうございます
2022/01/31(月) 21:41:49.66ID:TKYU0FmV
どうして[aa][aa][aa]や[aa]b[aa]ab[aa]にはならないのですか
https://ideone.com/WKK9DO

my $str = 'abab';
$str =~ s/(?<=\Ka)b/[$&]/g;
print ${str}; # [ab][ab]

my $str = 'aaaaaa';
$str =~ s/(?<=\K.)./[$&]/g;
print $str; # [aa]aaaa

my $str = 'aabaaabaa';
$str =~ s/(?<=\Ka)a/[$&]/g;
print $str; # [aa]b[aa]abaa
2022/02/01(火) 08:22:41.99ID:1FVHaQ2P
>>190
>>1
2022/02/01(火) 12:52:35.33ID:xlL1v7Ej
\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/(?<=\K <-- HERE a)b/
2022/02/01(火) 20:14:34.81ID:RFI3kyJu
>>192
ありがとうございました

https://perldoc.perl.org/perl5320delta#%5CK-now-disallowed-in-look-ahead-and-look-behind-assertions
2022/02/11(金) 15:34:16.36ID:wiPjvtyL
[<"]{1,2}[^<>"].+[>"]{1,2}

と書いたのですが
"C:\Windows\System32\calc.exe"と"C:\Windows\System32\notepad.exe"

"と"←この部分もヒットしていまいます
この部分をヒットしないようにするにはどうしたらいいですか?
2022/02/11(金) 15:43:32.09ID:3fYQCkDW
最短マッチで上手くいきそう
2022/02/11(金) 15:47:22.25ID:XbmfRAz/
>>194
ドットいらない
2022/02/11(金) 15:50:16.57ID:iG9n81+f
"\w:[^"]++"
2022/02/11(金) 17:26:42.82ID:wiPjvtyL
>>196
有難うございます
上手く行きました

最短マッチも勉強します
2022/02/11(金) 18:08:03.21ID:yV5vo0tT
>>197
java以外では最長と強欲の挙動って一緒なのかな?
2022/02/11(金) 18:24:50.25ID:FMt4h3Z+
>>199
一緒だったらわざわざ別表記を作らないよ
2022/02/24(木) 15:01:33.70ID:hcs+VfLS
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
検索

●説明
指定した文字列を含む行と、それ以降の行を削除したいです

↓文字列がDの場合の例
●対象データ
ABCA
BCDAA
CABDA

●希望する結果
ABCA

行をまたぐので可能かはわかりませんが
よろしくお願いします
2022/02/24(木) 15:56:44.82ID:aUuEQTy2
置換では?
2022/02/24(木) 16:21:25.53ID:XVFOP1rX
ヘルプに書いてるでしょ
https://sakura-editor.github.io/help/HLP000089.html
> (mオプションが付いていますが、改行をまたいだ検索はできません。)

可能にする方法はあるようだが今も使えるのかは知らない
http://sakura.qp.land.to/?FAQ%2F2

素直に複数行検索置換出来るツールやエディタ使った方が良い
2022/02/24(木) 16:39:23.62ID:hcs+VfLS
>>203
失礼しました
これまでたまの置換えでしか使わなかったのでヘルプ読んでませんでした
また、別な無料のエディタで可能な正規表現があれば
セットで教えていただきたいです
ありがとうございました!
2022/02/24(木) 16:57:42.07ID:XVFOP1rX
Mery
^(?=.*D)(.*\n)++
2022/02/24(木) 18:04:56.22ID:hcs+VfLS
>>205
希望通りにできました。エディタまで教えていただき本当にありがとうございます!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2022/03/05(土) 11:04:51.46ID:UMjr+RM8
https://github.com/kkos/oniguruma/issues/234
2022/03/05(土) 13:30:05.01ID:ST2bI6pB
よろしくおねがいします。


●Regular Expressionの使用環境
auto hot key

●検索か置換か?
置換

●説明
日本語URLを除去したい
%..* で一致するがPCRE書式化(AHK文法?)が解らず。。。


●対象データ
%00%00%00%00%00%00
00は数字2桁
2022/03/05(土) 14:39:44.43ID:CfflkLyE
(%\d\d)++
2022/03/05(土) 15:55:58.31ID:ST2bI6pB
>>209
早速ありがとうございます!
wiki記載の意味がやっと理解できました。
下記エラーになりました。
すいません対象データ誤りで英数字2桁のため\w\wにしてもだめでした。

Line Text: \d\d
Error: The leftmost character above is illegal in an expression.
※\w\wも同じ。


構文的には正しいようです。
https://i.imgur.com/Wxv5olC.png
2022/03/05(土) 15:58:19.76ID:auOTeG9V
あれ、\dでいいの?文字コードだから16進じゃない?
2022/03/05(土) 16:23:02.27ID:vjAKKjP5
(?:%[:xdigit:]{2})+
では?
2022/03/05(土) 16:33:42.80ID:vjAKKjP5
(?:%[[:xdigit:]]{2})+
だった
2022/03/05(土) 18:13:24.65ID:ST2bI6pB
>>213
ありがとうございます上手くいきました!
何でそうなるのか.. wikiにらめっこしてみます。

が、正規表現テストツール上では上手くマッチしますが、MsgBoxで出力すると #_=_ がくっついてきます。スレチならすいません。

>>211
URLエンコードって16進数だったんですね。
2022/03/06(日) 00:13:11.29ID:6dwIIS19
wikiってどこのこと?
2022/03/06(日) 16:28:44.42ID:ez4sjEWa
>>215
https://sites.google.com/site/autohotkeyjp/reference/RegEx
2022/03/13(日) 17:17:27.89ID:dODqeNlh
https://github.com/kkos/oniguruma/issues/234
2022/03/19(土) 23:41:27.62ID:ur7rhOwp
http://www.kt.rim.or.jp/~kbk/regex/regex.html#NOTINCLUDED
>某巨大掲示板のとあるスレッドの情報によれば、 非包含オペレーターが
>期待通りに動かないパターンがあるようです。

おぬし、さてはここを見ておるな?                azure

>>217
故意にこれが出来るならSEO対策としてライバル企業をやっつけられるな
企業間でそんな話が出てないということは出来ないということではないだろうか
2022/03/20(日) 07:35:08.60ID:AfbYOGC9
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置換

●説明
ある文字列Aを含む行のうち、ある文字列Bを含まない行を
すべて削除したいです

●対象データ(文字列Aを含む行のうち、Bを含まない行を削除。囲み数字はデータではなく単なる通し番号で入れています)
@ABCA
AFCAA
BCABA
CDBBC
DAFFC
EBABF
FFDFC

●希望する結果(Aが有って、Bが無いAD行を削除しました)
@ABCA
BCABA
CDBBC
EBABF
FFDFC

よろしくお願いいたします。
2022/03/20(日) 07:55:09.42ID:UyeAjpj2
^(?=.*A)(?!.*B)[\s\S]*
2022/03/20(日) 08:51:18.12ID:AfbYOGC9
>>220
いつも素早い回答をありがとうございます!うまくいきました!誠に感謝です。ありがとうございました!
2022/03/20(日) 19:15:12.05ID:ZHfPfLkc
>>221
219より一つ前にあなたがした質問はどれ?
2022/03/22(火) 18:15:19.98ID:CHL1FHKG
>>222
お返事が遅くなりすみません。このスレでは201のみです。
また今後もよろしくお願いします!
2022/04/05(火) 13:22:00.18ID:jmydyZMd
非包含オペレータのバグの詳細
https://github.com/tonco-miyazawa/regex_etc/blob/master/MEMO_Onigmo/absense_bug_detai.pdf
2022/04/09(土) 11:11:19.33ID:RvdBAddV
●正規表現環境: VS Code
●検索か置換か: 置換
●対象データ:24時間表記の時間
●説明:

24時間表記を12時間表記にしたい。

●例:
23:59:30 → 11:59:30

正規表現で可能ですか?
2022/04/09(土) 12:41:52.96ID:CVydPDGM
>>225
無理じゃね?
簡単なスクリプトを書いたほうが早い
2022/04/09(土) 12:49:55.79ID:FmMbp+0V
13:→1:
14:→2:

24:→12:
分と秒は正規表現でキャプチャ
みたいに高々12回置換すればええやん?
そういう意味じゃないんか
2022/04/09(土) 12:59:17.52ID:OC1bdbLm
愚直に12回置換すれば出来る
12(?=(?::[0-5]\d){2})
00
13(?=(?::[0-5]\d){2})
01

23(?=:[0-5]\d:(?:[0-5]\d|60))
11
2022/04/09(土) 14:50:47.61ID:CVydPDGM
a.m.やp.m.の情報は消えても大丈夫なのかな?
2022/04/09(土) 14:56:25.02ID:RvdBAddV
amやpmは無くてもokです
2022/04/13(水) 22:16:00.64ID:pxLJgBKP
https://github.com/kkos/oniguruma/issues/234
2022/04/15(金) 16:20:16.62ID:M7wVtHzF
Apacheのmod_rewrite(Perl互換)でルート直下の特定のディレクトリとその配下のみリダイレクトしない条件にヒットする正規表現を探しています

@/.well-known
A/.well-known/
B/.well-known/ランダムな文字列

この3つにヒットしてくれればいいのですが

・ルート直下なので行頭指定
・スラッシュのない方の.well-knownは行末を指定(完全一致)
・スラッシュのある方の.well-known/は配下のディレクトリへのアクセスも想定して行末を指定しない(前方一致)
を一行に収めようと考えた結果
^/\.well-known(/|$)
が思い浮かんだので使ってみたらなんとなく動いてるんですが
メタ文字の|って比較対象が行末の$だけでも機能するものなのでしょうか

完全一致+前方一致の書き方のお作法みたいなのがあればだれか教えてください…
2022/04/15(金) 21:37:03.46ID:GEApyL4S
それでOK。 ケチを付けるなら (?:/|$) にすれば無駄なキャプチャを防げる。
先読みを理解してるなら (?=/|$) でもOK。
2022/04/16(土) 06:02:27.62ID:mQZGE0o5
正規表現を使ってモンスターを討伐していくゲーム「Regex Hunting」をプレイしてみた - GIGAZINE
https://gigazine.net/news/20220415-regex-hunting/
2022/04/16(土) 07:11:08.64ID:9DJ1ctMv
>>233
ありがとうございます
今は(?:/|$)にして先読みも勉強してみます
2022/04/20(水) 03:44:08.18ID:KwUP8MZL
正規表現道場スレに書きましたが過疎スレだったようでこちらで質問させていただきます

スマホのブラウザ(Berry browser)での検索結果にでたYouTubeのリンクを
NEWPIPEで開くようにする正規表現をおしえていただけませんか?

詳しく言語はなにかわかりません
237デフォルトの名無しさん
垢版 |
2022/04/20(水) 03:46:48.26ID:hF4awL06
>>236
あっちで見せたスクショも見せてあげて
2022/04/20(水) 04:01:59.26ID:KwUP8MZL
https://i.imgur.com/uYNHUV2.png
2022/04/20(水) 07:25:55.71ID:YedSEyAo
>>236
お前NewPipeスレでスレチだ言われても居座って、最後移動する時にすら謝罪もせずに投げっ放しじゃん
もう少しネットマナー守りなよ
2022/04/20(水) 13:23:33.24ID:0zdB9CsP
>>239
粘着警察
2022/04/20(水) 13:29:26.67ID:U0AnfaoX
.*YouTube.*
2022/04/24(日) 11:37:18.90ID:HhXo0urf
●Regular Expressionの使用環境
秀丸エディタ

●検索か置換か?
検索

●説明
台詞の行の後は1行改行を置いて、また台詞の行になるように整形したいです
もしも「からはじまる行が2行連続している場合、そこにヒットするような検索方法があるなら、
何卒、ご教示の程よろしくお願いいたします。

●対象データ

「ダミーテキストAダミーテキストAダミーテキストA」

「ダミーテキストBダミーテキストBダミーテキストB」
「ダミーテキストCダミーテキストCダミーテキストC」

「ダミーテキストDダミーテキストDダミーテキストD」

●希望する結果

「ダミーテキストAダミーテキストAダミーテキストA」

「ダミーテキストBダミーテキストBダミーテキストB」

「ダミーテキストCダミーテキストCダミーテキストC」

「ダミーテキストDダミーテキストDダミーテキストD」
2022/04/24(日) 13:45:54.53ID:rcB2xidb
>>242
\n+ を \n\n に置換すればいいんじゃね?
2022/04/24(日) 14:27:40.33ID:+3jFx4NA
したい事が検索と書いてあるのに、整形したいですってどういう事?
整形したいって事は置換なの?
245デフォルトの名無しさん
垢版 |
2022/04/24(日) 15:00:10.62ID:K7LKRW48
整形したい!痴漢なんです
イケメンならこんな事しなくて済みます
2022/04/24(日) 15:27:14.57ID:HHIBSCEK
>>242
」¥n「 → 」¥n¥n「
とか
(.)¥n「 → $1¥n¥n「
とか
2022/04/24(日) 15:30:33.03ID:ioskjRP6
> 検索と書いてあるのに、整形したいですってどういう事?
秀丸から察しろよw
池沼でしょ
」\n「
」\n\n「
2022/05/01(日) 14:50:51.02ID:GoET9IZ/
CSVファイルのセパレータ以外にマッチさせる正規表現が分かればご教示ください
ダブルクォートの中のカンマはセパレータではないという条件が難しく難儀しています
2022/05/01(日) 15:35:29.51ID:Rd1MW222
>>248
csv 正規表現 でググれ
250デフォルトの名無しさん
垢版 |
2022/05/02(月) 15:41:45.47ID:3wkltjCW
>>2のテンプレで環境や対象データ、希望結果のサンプルを書いてよ
2022/05/03(火) 04:52:31.13ID:UnZpzFGu
"あ,い
う'え""お"

これでも、1列しかない。
最初・最後のダブルクォーテーションで、1つの列内・要素を表す

その要素内では、カンマ・改行・シングルクォーテーション・ダブルクォーテーションも使える。
ただし、ダブルクォーテーションは2つ連続させて、1つのダブルクォーテーションと解釈される

だから、このダブルクォーテーションの規則が難しい。
例えば、ダブルクォーテーションに番号を振ると、1-23-45-6

連続したダブルクォーテーションを排除して、1-6 の形で、1つの要素を表す。
つまり、最後のダブルクォーテーションは偶数番目になる

もし、奇数番目で終わっていたら、形式エラー
2022/05/03(火) 12:12:48.00ID:aiGUnYt7
("[^"]*")+|[^,"\r\n]+|(?<=,)|^(?=,)
https://regex101.com/r/bIK679/1#Eb3c9v813lTbFbhMKiOwdJxb
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。