Regular Expression(正規表現) Part17

2024/12/23(月) 12:51:43.05ID:hOdCdrxj
半年あったら正規表現覚えたほうが早いな、Meryクリスマス
2024/12/23(月) 12:59:50.83ID:hOdCdrxj
I have a pen. I have an apple.
2024/12/31(火) 20:44:10.06ID:Thw2Z7nN
(?<=This year)(?=Next year)
2025/01/04(土) 18:21:54.49ID:YsNNcli5
<title> を
\<title\> って書かないとエラーになるケースってあるの?
2025/01/04(土) 19:03:21.90ID:0KLOcGyc
GnuRegexとGrepでは\<と\>は特別な意味を持つ、それぞれ単語の先頭、単語の末尾にマッチする
だから<title>にマッチさせたいのではなくtitleにマッチさせたいのかも

\<と\>で囲えばbigtitleやtitleholderにはマッチしなくなる
2025/01/04(土) 20:47:05.52ID:a+K50MRq
Gnuって書いたらヌーになるがな
2025/01/04(土) 21:43:10.75ID:12P97q6K
メタ文字 \b が使えない環境ってことなんだろうか?
2025/01/04(土) 21:56:58.81ID:0KLOcGyc
うぐぅ

>>253 高須クリニック
2025/01/04(土) 22:07:44.40ID:0KLOcGyc
すまん、二刀流だった
https://www.gnu.org/software/grep/manual/html_node/Special-Backslash-Expressions.html
2025/04/05(土) 13:05:55.46ID:/X2GFnPw
GeminiにChatでやりたいこと入力したらずばりの正規表現回答してくれんのすごすぎて草
そんで最強のGrep検索・置換ツールのVScodeにその正規表現をコピペするだけの簡単なお仕事
マジで更新もされず陳腐化したクソ使い難い正規表現アプリやサービスがすべて駆逐されんの納得でクソワロタ
257デフォルトの名無しさん
垢版 |
2025/04/05(土) 14:35:59.22ID:dD+UMa0w
VSCodeやのにCopilotつかわんのなんでなんw
置換はperl -i -peが手軽にコードも介在できて未だに最強
2025/04/05(土) 17:01:54.69ID:yzm+sG/V
文章でミジンコだとわかるだろほっといてやれ
2025/04/07(月) 00:01:48.06ID:HqNk85Dr
一方、ロシアは秀丸エディタを使った
2025/04/07(月) 18:30:32.29ID:+glSnyRi
米国がEmEditorを使うところから物語は始まるのか
2025/05/07(水) 13:34:42.62ID:VK/GbxYn
後方参照を初めて使ってみた
なるほど便利
後方を参照するのかと思っていたが後方で参照すると言う意味だった
2025/05/08(木) 20:10:04.49ID:a95yfZhU
ぎょぎょぎょ?参照うお
2025/05/08(木) 20:37:02.88ID:NyjQsc8w
ぎょえーー
264デフォルトの名無しさん
垢版 |
2025/06/10(火) 10:10:19.59ID:JUI3rKzN
置換……指定した文字を置換します。
@AA@A@.TXTの"@"を"Q"に置換(場所の指定無し)
QAAQAQ.TXT - すべて置換される

@AA@A@.TXTの"@"を"Q"に置換(場所を指定)

前から1文字目 : QAA@A@.TXT - 前から1文字目のみ置換
前から4文字目 : @AAQA@.TXT - 前から4文字目のみ置換
後から1文字目 : @AA@AQ.TXT - 後から1文字目のみ置換

削除……指定した場所にある文字を削除します。
ABBAA.TXT、ACCAA.TXTの前から2文字目から右に2文字を削除
ABBAAB.TXT → AAAB.TXT
ACCAAC.TXT → AAAC.TXT
2025/07/13(日) 21:04:57.49ID:Dpndt2SK
iOSです
このスレで訊いて良いのかわかりませんが
Instagramの画像はその投稿のURL、例えばこれ↓

https://www.instagram.com/p/DL6O8f3zfb-/

の末尾に「media/?size=l&.jpg」を加えると投稿の一枚目の画像URLになります


https://www.instagram.com/p/DL6O8f3zfb-/media/?size=l&.jpg

しかし、2枚目以降の画像URLがわかりません
「media/?size=l&.jpg」をいじって2枚目以降の画像URLが作れませんでしょうか
ご教授お願いします
2025/07/13(日) 21:12:41.07ID:SOWPf8Mn
正規表現関係ねーw
2025/07/13(日) 21:19:50.98ID:Dpndt2SK
どこで訊いたら良いのかわからず、パソコン詳しい人が多そうなここで質問させて頂きました
2025/07/14(月) 01:14:36.64ID:KR/EmCR1
和んだ
2025/07/14(月) 02:28:52.50ID:yh4CMksV
PC詳しい人が多そうなスレでそういう質問を受け付けていると
馬鹿が多そうなスレに成り下がると気が付かないものかね
2025/07/25(金) 05:51:04.25ID:3r8TzWYu
>>264
sed の出番か?
271デフォルトの名無しさん
垢版 |
2025/08/09(土) 13:09:26.08ID:AY2Xi2Yg
SNSやWeb検索もたいてい正規表現対応してるからプログラミング以外で活用できる場面が増えてなんか嬉しい
2025/08/14(木) 17:46:16.07ID:ll+c+ksk
そんなに対応してるのある?
2025/09/29(月) 18:28:57.47ID:omFFHDum
^[^:]+://+([^:/]+\.)?

これの//+部分って//だけで問題ありますか?
2025/09/29(月) 19:15:27.09ID:QGaGSVZY
>>273
その正規表現の目的は理解できてるの?
2025/09/29(月) 21:45:19.64ID:SNsW5d6C
>>273
スラッシュをエスケープしなきゃいけない環境で使う正規表現かどうかによる
エスケープしなきゃいけない環境なら問題があるしそうじゃない環境なら問題ない
2025/09/29(月) 22:25:44.67ID:RjmgsX7I
file://で次が/になる場合はある

https://en.wikipedia.org/wiki/File_URI_scheme
2025/09/29(月) 22:54:22.13ID:FkLCZ8/e
何にマッチさせたいかによるわな
278デフォルトの名無しさん
垢版 |
2025/10/25(土) 12:46:17.09ID:BjPJz/dc
【悲報】4/24に鬼車がgithubで開発終了したのに続いて
鬼雲(bregonig.dll)の公式サイトが9/30で閉鎖
http://k-takata.o.oo7.jp/
https://x.com/k_takata/status/1970461557374230654
2025/10/28(火) 01:47:57.16ID:WdB2Psfo
鬼車はJavaScriptの仕様に寄せろと細かいことまで言われて
嫌気がさしたのかなという印象だけど真相は作者のみぞ知るか

ただ最近はDFAキャッシュを使うエンジンの台頭で
これとかboost.regexが速いとされた時代はとうに終わってるんで
マルチバイト対応を必要とする人以外はあまり影響ない気もする
280デフォルトの名無しさん
垢版 |
2025/11/02(日) 19:07:30.81ID:vGsY1NrW
「正規表現技術入門」を読むと、GNU grep ではマッチング途中で必要になった部分だけ
オンデマンドで DFA を構成していく On-the-Fly 構成法を使っている、と書かれてるけど
どのレベルから On-the-Fly してるんでしょ ?

部分集合構成法で NFA を DFA に変換する所からなのか、もっと前のε-遷移除去からなのか
あるいはさらに前の正規表現をパースして NFA を作る所も On-the-Fly なんですかね ?

GNU grep のソース見ろと言われそうだけど
2025/11/02(日) 20:01:30.27ID:JoUIYtII
正規表現の枠を超える後方参照(\1)とかで使ってそう
あれが絡むと事前にDFA作れない
2025/11/02(日) 20:13:48.87ID:JoUIYtII
正則言語の枠か
用語がちょっと怪しい
2025/11/03(月) 19:15:39.49ID:6hs01YZr
>>280
自己レス。AI に聞いたら

| GNU grepでは、DFA の生成に On-the-Fly(実行時逐次的)な手法を採用していますが、
| それは基本的に部分集合構成法を逐次的に行うことを意味します。
| ε遷移の除去も、このプロセスの中で実質的に On-the-Fly で行われます。

とのことでした。やっぱε-除去も On-the-Fly なのか、ムズいなー

>>281
GNU grep の On-the-Fly 法は、到達しない状態ノードを作らないようにすることで
省メモリ化と高速化が目的なので、DFA の構造自体が動的に変わるものではないと思ってました。

で、言われるように後方参照は正規言語のクラスを超えてるので、DFA 型エンジンでは
普通は実現出来ないのだけど、「正規表現技術入門」では

| GNU grep は基本的に DFA 型ですが、部分的(後方参照への対応のためなど)に一部
| VM 型のアプローチもとっています。

とかさらっと書いてあるだけで、具体的な記述はないんすよね (やっぱ入門書だな)。

でも言われてみれば、On-the-Fly 的に動的に DFA を構成して行けば、それで後方参照も
実現出来そうな気がしてきた。バックトラックとか面倒そうだけど一考の価値はあるかも

GNU grep もそうやって実装してる ? かどうかは分からないけど
2025/11/05(水) 01:01:25.63ID:hq1L/1I1
それわかったらなんか良いことあるの(クルクルパー
2025/11/07(金) 00:31:17.29ID:Ua2fzQVD
NFA使わずに正規表現から直接DFAを構成する方法がDragon Bookに書いてあるけど
この書籍は今もDragon Bookで通じるのかな
もう古文書扱いされてそう
2025/11/07(金) 17:38:51.77ID:2v77MqUc
>>285
情報ありがとうございます
やはりドラゴンブックは読まざるを得ない感じですかね
読んでみます (気は重いけどw)
2025/11/07(金) 18:36:08.56ID:Ua2fzQVD
Dragon Bookでpdf検索すると大学のサイトとかで英語版が引っ掛かるけど旧版はセーフなのかな
DFAの構成法は第2版だと3.9節
少なくとも3章は最初から読んだ方がいいと思う
コンパイラに興味ないなら全部読む必要はない
2025/11/07(金) 19:00:36.04ID:Ua2fzQVD
そういえば正規表現自体の解析で4章前半のTop-Down Parsingくらいまでは役に立つかも
2025/11/07(金) 20:27:12.90ID:2v77MqUc
>>287
ありがとうございます。旧版 (日本語訳) はT、U共にさっき中古をポチりました
届くのは来週末だけど、図書館に第二版があるようなので明日行ってきます
コンパイラに興味ない、とまでは言わないけど、果たしてそこまで手を広げられるものなのか心許ないす
2025/11/11(火) 08:03:53.83ID:TgiPYl91
こういう方に最新版をポンと出す制度にならんもんかな
2025/11/11(火) 14:34:01.30ID:XyI6oP+4
複数の正規表現を使い分けられる記法があるといい
2025/11/20(木) 00:34:25.20ID:mbRrNt6G
DragonBook (第2版) の第3章まで読んだら、>>280 に書いた ε-遷移についての最初の疑問も氷解してしまったので、
一応伏線回収しておきます

「正規表現技術入門」では、ε-遷移を除去した後で部分集合構成法を行う、という流れで記述されていたので、
部分集合構成法を行うには前もって ε-遷移を除去しなければならない、と思い込んでいたのだけど、
その必要は全くなかったのでした

部分集合構成法の処理の中で一つ部分集合が得られたら、その集合の ε-閉包を取って
(その集合に そこから ε-遷移する状態を全て加えて)、それを DFA の 1 状態とすればよいだけなのでした

>>283 に書いた AI の回答が何となく歯切れが悪かった理由もこれで納得出来たわけで、
何でこんな簡単なことを思い付かなかったのか、我ながらアホでしたね

「正規表現技術入門」は章ごとに執筆者が違っていて、VM 型エンジンの章は鬼雲の作者が直々に書いていて説得力があるのですが、
DFA 型エンジンの章、とくにこの ε-遷移あたりの記述は今一つな感じです (エラそうに言ってますが)

--
ところで DragonBook 3.9 節の「正規表現から直接 DFA を導くやり方」も読みました
シンプソン構成法を経由せず、構文木から DFA を導くのはスゲーと思ったのですが
followpos() の張るダイアグラムは一種の NFA 的なものなので、それを DFA に変換する時には
やはり部分集合構成法と同じ手法を使うわけですね
とは言え ε-遷移が存在しないので扱う状態数もずっと少なくて済むはずなので、
これを使って On-the-Fly 法を実装して行きたいと思ってます

何にせよ、DragonBook を読めと言ってくれた >>285 さんには感謝しかないです
ありがとうございました
2025/11/20(木) 01:53:23.80ID:MRBYucy1
●Regular Expressionの使用環境
 Java1.5
●検索か置換か?
 検索
●説明
 http://https://があるもしくはない場合のドメインとサブドメインを検索したい
 自分で考えた以下の正規表現だと、.から始まる不正なURLまで一致してしまいダメでした
^(https?://)?(.*\.)?doubleclick.net
●対象データ
#一致させたいものは以下
http://doubleclick.net/pagead/
https://doubleclick.net/pagead/
http://g.doubleclick.net/pagead/
https://g.doubleclick.net/pagead/
http://googleads.g.doubleclick.net/pagead/
https://googleads.g.doubleclick.net/pagead/
doubleclick.net/pagead/
g.doubleclick.net/pagead/
googleads.g.doubleclick.net/pagead/

#一致させたくないものは以下
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/
0doubleclick.net/pagead/
http://0doubleclick.net/pagead/
https://0doubleclick.net/pagead/
2025/11/20(木) 09:40:15.39ID:Mz3QCXK6
その処理系で文字クラスが使えるなら (.*\.)? を ([^.0].*\.)? とすればイケるハズ
295293
垢版 |
2025/11/20(木) 15:17:38.43ID:MRBYucy1
>>294
レスありがとうございます
以下の2行は一致しなくなりましたが、
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/

以下の6行は一致してしまいました
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
2025/11/20(木) 16:30:51.92ID:0pUMlwmF
"doubleclick.net"は決め打ちでいいのかな

Pattern p = Pattern.compile("^(?:https?://)?((?:[^./?#]+\\.)*doubleclick\\.net)(?=[:/]|$)");

マッチした後の処理は分からんけど動作例
https://ideone.com/3WFyH6
297293
垢版 |
2025/11/20(木) 21:15:50.67ID:MRBYucy1
>>296
レスありがとうございます
せっかく教えていただいたのにすみません、JavaではなくてJavaScriptでしたので動作しませんでした

チェッカー
https://www-creators.com/tool/regex-checker
2025/11/20(木) 21:32:25.61ID:0pUMlwmF
今時分にJava1.5でおかしいと思ったけどスルーしてしまった
文字列でエスケープしてる\\を\に直せば使えるはず
ついでに?と#を先読みに追加した(多分いらない)

^(?:https?://)?((?:[^./?#]+\.)*doubleclick\.net)(?=[:/?#]|$)
299293
垢版 |
2025/11/20(木) 21:52:35.87ID:MRBYucy1
>>298
度々ありがとうございます
完璧に動作しました!
助かりました

未だに先読みと後読みが使いこなせず・・・詰んでました
2025/11/20(木) 23:34:16.70ID:mbRrNt6G
>>292
シンプソン構成法じゃなくてトンプソン構成法でした。すまそん
尊敬する Ken Thompson の名前を間違えるとはヤバ過ぎ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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