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/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
2022/05/03(火) 14:14:16.35ID:t3Dpq+T6
(?=,|$)
2022/05/13(金) 22:38:19.25ID:8kGCIaIA
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置き換え

●説明
タブ区切りcsvファイルの列の順番を入れ替えたい

●対象データ
1\t2\t3\t・・・\t30
※実際は各フィールドは数字だけではなく、長さも一定ではありません。
フィールド数は30で固定です。

●希望する結果・・を出すために、
^(.*?\t)(.*?\t)・・・(.*)
$3,$8,$1・・・

のように書いて、一旦用は足りましたが
これをもっとスマートに書く方法はありますでしょうか。

よろしくお願いいたします。
2022/05/14(土) 01:45:41.14ID:rmaMAnUs
$30を別の場所に持ってくると右隣りとくっついてしまうな
2022/05/14(土) 05:36:59.01ID:NJOQ17Ts
テンプレ使っているようでテンプレ無視して実例挙げず
タブ区切りのはずが何故かカンマ+タブの区切りになっているがその説明も無し
2022/05/14(土) 08:03:49.09ID:qR2dE/b7
本当に タブ+カンマ にしたいとしても俺なら
^(.*?)\t(.*?)\t・・・(.*)$
$3\t,$8\t,$1\t・・・
って書くかな
2022/05/14(土) 09:56:07.44ID:/Fl6kBO1
俺が作るなら [^\t]* を使って誤爆の可能性を潰しておく
列が31以上ある異常データのときに置換しなくする
2022/05/14(土) 10:21:31.73ID:bJIgpLv6
処理対象ファイルが数十個あるとかなら別だけど、表計算ソフトや対応エディタでサクっと入れ替えた方が早そう
2022/05/14(土) 11:56:38.01ID:/Fl6kBO1
そういやそうだね、csvなんだしw

>>256
テンプレ自体が糞質問製造機になってるからテンプレいらね
俺は今回の質問に不備はないと思っている
261デフォルトの名無しさん
垢版 |
2022/05/16(月) 18:46:22.01ID:nBhW9usr
探している正規表現の学習サイトがあります。
ネットスラング、小説などの蘊蓄を題材にした問題が置いてあるサイトです。
AAが問題の解説を行なっていた記憶があります
UIはシンプルながら、メタ文字から始まり、後方参照などの発展的な部分、総括したチャレンジ問題など結構ボリュームがある問題集でした。
久しぶりに見にいきたかったのですが、どうにも見つからず、
どなたかご存知でしたら教えていただけると幸いです。
よろしくお願いします。
2022/05/24(火) 04:21:55.25ID:SL15aOsO
質問させてください。
荒らし対策に「読点2回」を指定するNG表現を作ってみたのですが、一応機能しました

(.*\、.*\n*){2}

上記はもっと簡略化できるでしょうか?
2022/05/24(火) 04:27:32.12ID:7Wh7VSQ0
、.*?、
2022/05/24(火) 04:43:45.06ID:SL15aOsO
>>263
即答ありがとうございます

(10文字以上、){2}

のように「10文字以上、」が2回以上あったらNGというプログラムも教えてくれますか?
2022/05/24(火) 05:20:15.74ID:SL15aOsO
すみません、ありがとうございました。
266デフォルトの名無しさん
垢版 |
2022/05/25(水) 21:16:43.73ID:rVRUpzpa
自分が書いた正規表現を半年後くらいに見たら
何の処理なのか思い出せない。
正規表現って便利だが、そう言う点が唯一のデメリットだよな。
2022/05/25(水) 21:33:08.27ID:JiQQrvQ9
>>264
(10文字以上、){2,}
2022/05/25(水) 22:10:02.21ID:SBYC3EV0
(?#何の処理)
269デフォルトの名無しさん
垢版 |
2022/05/26(木) 10:08:16.60ID:Nn08GFXz
●Regular Expressionの使用環境
PowerShell 7.2.4

●検索か置換か?
置換(-replaceもしくは[regex]::Replace)
もしくは抽出(-match)
●説明
ドメインからサブドメインを取り除いた値が欲しい

●対象データ
www.example.com
hoge.www.example.com
hoge.hoge.www.example.com

●希望する結果
example.com
example.com
example.com

お願いします
2022/05/26(木) 10:11:53.48ID:Nn08GFXz
>>269
すいません、これだと「example.com$でいいだろ」になりますね
バラバラなURL、つまり
●対象データ
www.example.com
hoge.www.test.com
hoge.hoge.www.foo.com

●希望する結果
example.com
test.com
foo.com

でお願いします…
2022/05/26(木) 10:34:55.49ID:6qaNDFBW
powershellでの書き方は分からんが
[^.]++\.com$
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況