Regular Expression(正規表現) Part17 (300レス)
Regular Expression(正規表現) Part17 http://mevius.5ch.net/test/read.cgi/tech/1702684760/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [] 2023/12/16(土) 08:59:20.50 ID:uVHZ7e2j Regular Expressionスレです。 質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part16 https://mevius.5ch.net/test/read.cgi/tech/1635936601/ 次スレは>>980宜しく テンプレ>>2以降 http://mevius.5ch.net/test/read.cgi/tech/1702684760/1
271: デフォルトの名無しさん [] 2025/08/09(土) 13:09:26.08 ID:AY2Xi2Yg SNSやWeb検索もたいてい正規表現対応してるからプログラミング以外で活用できる場面が増えてなんか嬉しい http://mevius.5ch.net/test/read.cgi/tech/1702684760/271
272: デフォルトの名無しさん [sage] 2025/08/14(木) 17:46:16.07 ID:ll+c+ksk そんなに対応してるのある? http://mevius.5ch.net/test/read.cgi/tech/1702684760/272
273: デフォルトの名無しさん [age] 2025/09/29(月) 18:28:57.47 ID:omFFHDum ^[^:]+://+([^:/]+\.)? これの//+部分って//だけで問題ありますか? http://mevius.5ch.net/test/read.cgi/tech/1702684760/273
274: デフォルトの名無しさん [sage] 2025/09/29(月) 19:15:27.09 ID:QGaGSVZY >>273 その正規表現の目的は理解できてるの? http://mevius.5ch.net/test/read.cgi/tech/1702684760/274
275: デフォルトの名無しさん [sage] 2025/09/29(月) 21:45:19.64 ID:SNsW5d6C >>273 スラッシュをエスケープしなきゃいけない環境で使う正規表現かどうかによる エスケープしなきゃいけない環境なら問題があるしそうじゃない環境なら問題ない http://mevius.5ch.net/test/read.cgi/tech/1702684760/275
276: デフォルトの名無しさん [sage] 2025/09/29(月) 22:25:44.67 ID:RjmgsX7I file://で次が/になる場合はある https://en.wikipedia.org/wiki/File_URI_scheme http://mevius.5ch.net/test/read.cgi/tech/1702684760/276
277: デフォルトの名無しさん [sage] 2025/09/29(月) 22:54:22.13 ID:FkLCZ8/e 何にマッチさせたいかによるわな http://mevius.5ch.net/test/read.cgi/tech/1702684760/277
278: デフォルトの名無しさん [] 2025/10/25(土) 12:46:17.09 ID:BjPJz/dc 【悲報】4/24に鬼車がgithubで開発終了したのに続いて 鬼雲(bregonig.dll)の公式サイトが9/30で閉鎖 http://k-takata.o.oo7.jp/ https://x.com/k_takata/status/1970461557374230654 http://mevius.5ch.net/test/read.cgi/tech/1702684760/278
279: デフォルトの名無しさん [sage] 2025/10/28(火) 01:47:57.16 ID:WdB2Psfo 鬼車はJavaScriptの仕様に寄せろと細かいことまで言われて 嫌気がさしたのかなという印象だけど真相は作者のみぞ知るか ただ最近はDFAキャッシュを使うエンジンの台頭で これとかboost.regexが速いとされた時代はとうに終わってるんで マルチバイト対応を必要とする人以外はあまり影響ない気もする http://mevius.5ch.net/test/read.cgi/tech/1702684760/279
280: デフォルトの名無しさん [] 2025/11/02(日) 19:07:30.81 ID:vGsY1NrW 「正規表現技術入門」を読むと、GNU grep ではマッチング途中で必要になった部分だけ オンデマンドで DFA を構成していく On-the-Fly 構成法を使っている、と書かれてるけど どのレベルから On-the-Fly してるんでしょ ? 部分集合構成法で NFA を DFA に変換する所からなのか、もっと前のε-遷移除去からなのか あるいはさらに前の正規表現をパースして NFA を作る所も On-the-Fly なんですかね ? GNU grep のソース見ろと言われそうだけど http://mevius.5ch.net/test/read.cgi/tech/1702684760/280
281: デフォルトの名無しさん [sage] 2025/11/02(日) 20:01:30.27 ID:JoUIYtII 正規表現の枠を超える後方参照(\1)とかで使ってそう あれが絡むと事前にDFA作れない http://mevius.5ch.net/test/read.cgi/tech/1702684760/281
282: デフォルトの名無しさん [sage] 2025/11/02(日) 20:13:48.87 ID:JoUIYtII 正則言語の枠か 用語がちょっと怪しい http://mevius.5ch.net/test/read.cgi/tech/1702684760/282
283: デフォルトの名無しさん [sage] 2025/11/03(月) 19:15:39.49 ID: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 もそうやって実装してる ? かどうかは分からないけど http://mevius.5ch.net/test/read.cgi/tech/1702684760/283
284: デフォルトの名無しさん [sage] 2025/11/05(水) 01:01:25.63 ID:hq1L/1I1 それわかったらなんか良いことあるの(クルクルパー http://mevius.5ch.net/test/read.cgi/tech/1702684760/284
285: デフォルトの名無しさん [sage] 2025/11/07(金) 00:31:17.29 ID:Ua2fzQVD NFA使わずに正規表現から直接DFAを構成する方法がDragon Bookに書いてあるけど この書籍は今もDragon Bookで通じるのかな もう古文書扱いされてそう http://mevius.5ch.net/test/read.cgi/tech/1702684760/285
286: デフォルトの名無しさん [sage] 2025/11/07(金) 17:38:51.77 ID:2v77MqUc >>285 情報ありがとうございます やはりドラゴンブックは読まざるを得ない感じですかね 読んでみます (気は重いけどw) http://mevius.5ch.net/test/read.cgi/tech/1702684760/286
287: デフォルトの名無しさん [sage] 2025/11/07(金) 18:36:08.56 ID:Ua2fzQVD Dragon Bookでpdf検索すると大学のサイトとかで英語版が引っ掛かるけど旧版はセーフなのかな DFAの構成法は第2版だと3.9節 少なくとも3章は最初から読んだ方がいいと思う コンパイラに興味ないなら全部読む必要はない http://mevius.5ch.net/test/read.cgi/tech/1702684760/287
288: デフォルトの名無しさん [sage] 2025/11/07(金) 19:00:36.04 ID:Ua2fzQVD そういえば正規表現自体の解析で4章前半のTop-Down Parsingくらいまでは役に立つかも http://mevius.5ch.net/test/read.cgi/tech/1702684760/288
289: デフォルトの名無しさん [sage] 2025/11/07(金) 20:27:12.90 ID:2v77MqUc >>287 ありがとうございます。旧版 (日本語訳) は?、?共にさっき中古をポチりました 届くのは来週末だけど、図書館に第二版があるようなので明日行ってきます コンパイラに興味ない、とまでは言わないけど、果たしてそこまで手を広げられるものなのか心許ないす http://mevius.5ch.net/test/read.cgi/tech/1702684760/289
290: デフォルトの名無しさん [sage] 2025/11/11(火) 08:03:53.83 ID:TgiPYl91 こういう方に最新版をポンと出す制度にならんもんかな http://mevius.5ch.net/test/read.cgi/tech/1702684760/290
291: デフォルトの名無しさん [sage] 2025/11/11(火) 14:34:01.30 ID:XyI6oP+4 複数の正規表現を使い分けられる記法があるといい http://mevius.5ch.net/test/read.cgi/tech/1702684760/291
292: デフォルトの名無しさん [sage] 2025/11/20(木) 00:34:25.20 ID:mbRrNt6G DragonBook (第2版) の第3章まで読んだら、>>280 に書いた ε-遷移についての最初の疑問も氷解してしまったので、 一応伏線回収しておきます 「正規表現技術入門」では、ε-遷移を除去した後で部分集合構成法を行う、という流れで記述されていたので、 部分集合構成法を行うには前もって ε-遷移を除去しなければならない、と思い込んでいたのだけど、 その必要は全くなかったのでした 部分集合構成法の処理の中で一つ部分集合が得られたら、その集合の ε-閉包を取って (その集合に そこから ε-遷移する状態を全て加えて)、それを DFA の 1 状態とすればよいだけなのでした >>283 に書いた AI の回答が何となく歯切れが悪かった理由もこれで納得出来たわけで、 何でこんな簡単なことを思い付かなかったのか、我ながらアホでしたね 「正規表現技術入門」は章ごとに執筆者が違っていて、VM 型エンジンの章は鬼雲の作者が直々に書いていて説得力があるのですが、 DFA 型エンジンの章、とくにこの ε-遷移あたりの記述は今一つな感じです (エラそうに言ってますが) -- ところで DragonBook 3.9 節の「正規表現から直接 DFA を導くやり方」も読みました シンプソン構成法を経由せず、構文木から DFA を導くのはスゲーと思ったのですが followpos() の張るダイアグラムは一種の NFA 的なものなので、それを DFA に変換する時には やはり部分集合構成法と同じ手法を使うわけですね とは言え ε-遷移が存在しないので扱う状態数もずっと少なくて済むはずなので、 これを使って On-the-Fly 法を実装して行きたいと思ってます 何にせよ、DragonBook を読めと言ってくれた >>285 さんには感謝しかないです ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1702684760/292
293: デフォルトの名無しさん [age] 2025/11/20(木) 01:53:23.80 ID: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/ http://mevius.5ch.net/test/read.cgi/tech/1702684760/293
294: デフォルトの名無しさん [sage] 2025/11/20(木) 09:40:15.39 ID:Mz3QCXK6 その処理系で文字クラスが使えるなら (.*\.)? を ([^.0].*\.)? とすればイケるハズ http://mevius.5ch.net/test/read.cgi/tech/1702684760/294
295: 293 [age] 2025/11/20(木) 15:17:38.43 ID: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/ http://mevius.5ch.net/test/read.cgi/tech/1702684760/295
296: デフォルトの名無しさん [sage] 2025/11/20(木) 16:30:51.92 ID:0pUMlwmF "doubleclick.net"は決め打ちでいいのかな Pattern p = Pattern.compile("^(?:https?://)?((?:[^./?#]+\\.)*doubleclick\\.net)(?=[:/]|$)"); マッチした後の処理は分からんけど動作例 https://ideone.com/3WFyH6 http://mevius.5ch.net/test/read.cgi/tech/1702684760/296
297: 293 [age] 2025/11/20(木) 21:15:50.67 ID:MRBYucy1 >>296 レスありがとうございます せっかく教えていただいたのにすみません、JavaではなくてJavaScriptでしたので動作しませんでした チェッカー https://www-creators.com/tool/regex-checker http://mevius.5ch.net/test/read.cgi/tech/1702684760/297
298: デフォルトの名無しさん [sage] 2025/11/20(木) 21:32:25.61 ID:0pUMlwmF 今時分にJava1.5でおかしいと思ったけどスルーしてしまった 文字列でエスケープしてる\\を\に直せば使えるはず ついでに?と#を先読みに追加した(多分いらない) ^(?:https?://)?((?:[^./?#]+\.)*doubleclick\.net)(?=[:/?#]|$) http://mevius.5ch.net/test/read.cgi/tech/1702684760/298
299: 293 [age] 2025/11/20(木) 21:52:35.87 ID:MRBYucy1 >>298 度々ありがとうございます 完璧に動作しました! 助かりました 未だに先読みと後読みが使いこなせず・・・詰んでました http://mevius.5ch.net/test/read.cgi/tech/1702684760/299
300: デフォルトの名無しさん [sage] 2025/11/20(木) 23:34:16.70 ID:mbRrNt6G >>292 シンプソン構成法じゃなくてトンプソン構成法でした。すまそん 尊敬する Ken Thompson の名前を間違えるとはヤバ過ぎ http://mevius.5ch.net/test/read.cgi/tech/1702684760/300
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s