- 1 名前:デフォルトの名無しさん [2021/11/03(水) 19:50:01.71 ID:ebAE+z9+.net]
- Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part15 https://mevius.5ch.net/test/read.cgi/tech/1568640311/ 次スレは>>980宜しく 天ぷら等>>2以降
- 2 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 19:51:06.60 ID:ebAE+z9+.net]
- スルーされにくい質問のテンプレと例
●Regular Expressionの使用環境 Java1.5 ●検索か置換か? 検索 ●説明 各行の1番目のAまでを検索したい ●対象データ ABCA BCAA CABA ●希望する結果 ABCA ^ BCAA ^^^ CABA ^^ ※ ^ はアンダーラインだそうな ^^;
- 3 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 19:51:26.32 ID:ebAE+z9+.net]
- ◆関連サイト
正規表現メモ www.kt.rim.or.jp/~kbk/regex/regex.html Perl正規表現雑技 www.din.or.jp/~ohzaki/regex.htm 詳説 正規表現 www.oreilly.co.jp/books/9784873113593/ 正規表現クックブック www.oreilly.co.jp/books/9784873114507/ 正規表現プログラミングFAQ capslockabcjp.kitunebi.com/faq.html .NET Framework の正規表現 | Microsoft Docs https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions 正規表現 - JavaScript | MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions 鬼車 https://github.com/kkos/oniguruma 鬼雲 https://github.com/k-takata/Onigmo bregonig.dll(鬼雲の正規表現をサクラエディタ等で使用するためのライブラリ) k-takata.o.oo7.jp/mysoft/bregonig.html Boost.Regex 1.45.0 (日本語訳) alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf 秀丸: 複数行にまたがる検索について homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS サクラエディタ: 改行 d.hatena.ne.jp/myokoym/20101219/1292779058 ※ サクラエディタでは複数行に渡る検索・置換は出来ません。
- 4 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 19:54:20.40 ID:ebAE+z9+.net]
- 正規表現技術入門
https://gihyo.jp/book/2015/978-4-7741-7270-5 ↑の著者の一人であり Onigmo(鬼雲)やbregonig.dll の作者でもあるtakata先生のツイとQiitaの記事 https://twitter.com/k_takata 鬼雲に非包含オペレータを実装した話 https://qiita.com/k-takata/items/4e45121081c83d3d5bfd (deleted an unsolicited ad)
- 5 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 20:59:16.79 ID:554LNcID.net]
- >>1
スレ立てありがとう ところで、C++コンパイラごとにbasic_regex::replace()の置換後文字列のバックスラッシュがエスケープされたりされなかったりするのが厄介ですね
- 6 名前:デフォルトの名無しさん [2021/11/03(水) 21:43:29.56 ID:K+2zXBgv.net]
- https://troutlurefishing.jp/regex.htm
https://murashun.jp/article/programming/regular-expression.html https://www.itmedia.co.jp/news/articles/2111/02/news174.html
- 7 名前:デフォルトの名無しさん [2021/11/04(木) 11:16:22.06 ID:JyTL4wpj.net]
- nifty の URL 死んでるな
- 8 名前:デフォルトの名無しさん [2021/11/04(木) 11:42:25.33 ID:diIHvWke.net]
- DeNAが個人ブログから正規表現の表丸パクりしてたのワロタ
- 9 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 11:59:17.47 ID:iRkMc3Gk.net]
- 丸パクリならまだいい
改変もまともにできないのはヤバい 正規表現の例 マッチする例 Coo+el Coopel https://pbs.twimg.com/media/FC7n-5zaUAETKej.jpg
- 10 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 12:31:32.50 ID:B00ATyI8.net]
- >>9
どゆこと?
- 11 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 12:38:22.63 ID:Gz31zHb0.net]
- >>10
oの1回以上の繰り返しじゃ pにマッチするわけないです
- 12 名前:デフォルトの名無しさん [2021/11/04(木) 12:48:06.96 ID:diIHvWke.net]
- 元がgoogleを例にしてたからこうなったのかな
いずれにしてもワロタ
- 13 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 12:49:09.54 ID:iCxb5Ekd.net]
- >>10
https://regex101.com/r/8ri3Js/1
- 14 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 14:21:26.74 ID:B00ATyI8.net]
- >>11
ああ、勝手に.入れてた ほんとだひどいな
- 15 名前:デフォルトの名無しさん [2021/11/04(木) 14:53:30.31 ID:/D1z+6Mc.net]
- 劣化コピーだから責められてて
上品だったら叩けない訳か
- 16 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 08:20:43.21 ID:+Hevqd/d.net]
- 本歌取りと言う言葉もありますし
- 17 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 11:40:57.68 ID:pLniUbgZ.net]
- オマージュ・インスパイア→胡散臭い
本歌取り→凄そう
- 18 名前:デフォルトの名無しさん mailto:sage [2021/11/05(金) 12:37:40.52 ID:1iAtfRIf.net]
- 本歌取りに良いイメージがあるのは、この行為が和歌の世界で伝統的に許されてきたからだ。
- 19 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 20:39:20.57 ID:oKHbtIv+.net]
- 祝☆ vim 3o+年
- 20 名前:デフォルトの名無しさん mailto:sage [2021/11/06(土) 21:18:49.31 ID:G8Zn1Puj.net]
- >>19
スレ違い
- 21 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 00:36:45.12 ID:kpV1ZjX8.net]
- (/(>>1)/,'$1乙')
- 22 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 00:01:22.12 ID:5vPB6h42.net]
- 今までに無いかつら、非包含オペレータ
https://bokete.jp/odai/533281
- 23 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 10:09:56.72 ID:xJpmlO5M.net]
- vimで文字列処理ってマイナーなのか?
UIでマッチをハイライトしながらパターンを書けるし、書いたパターンと処理はperlやsedのようにコマンドライン引数で渡してシェルスクリプトに組み込める(UI無し、非インタラクティブモード) vimはバッファするからストリーム処理には向かないくて、パイプにはperlを使うけど、バッチ処理ならvimの方が速い あと、個人的にアサーションの記法(\@<=等)も、()が深くなりがちなperl系の(?<=等)より好みだ
- 24 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 10:57:59.40 ID:Y0jbpZIM.net]
- 惜しむらくは、マッチ後の単純でない処理を委託するvimscriptがクソなところだと思う、regex自体は十分パワフル
perlは任意のロジックをperl式に移譲するのが楽、パターンにも書けるし、大抵インラインで済む vim9で大幅に言語変えるっぽいけど、どうなるやら
- 25 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 11:19:19.50 ID:vc2enCPn.net]
- ()が減るケースって実用的にはあまり無いんじゃないか?アサーションの修飾対象がグループなら、どうせ()が必要になるわけだし
アサーションの\@が後置なのはperl系より一貫性があって良い設計だと思う、?,+,* etcと同列の修飾子とみなせる
- 26 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 21:36:14.28 ID:5vPB6h42.net]
- 非包含オペレータの提案者の方の過去ログ漁ってたらすごいの出てきた
ttp://www.a-k-r.org/pub/2013-06-02-rubyhiroba-akr.pdf これを使えば2次元の彼女が見つかりそう
- 27 名前:デフォルトの名無しさん [2021/11/17(水) 00:30:09.97 ID:pGjzwEdG.net]
- pythonで文字列分割をする時
1:・ー└等の1文字と、半角スペース3つ以上のいずれかで文字列を分解したい re.splitで、思いつく限りやってみましたが、うまく行きませんでした。 [・ー└]|( ){3,} [・ー└( ){3,}] [・ー└(( ){3,})] 試しにre.sub(〜, "", ・・・)で文字列が削除出来るかどうか試したときは半角スペース3つが消えました。 いくつかの文字 もしくは 特定の文字の繰り返し、で文字列を分解する書き方はありますでしょうか
- 28 名前:デフォルトの名無しさん [2021/11/17(水) 00:32:30.60 ID:pGjzwEdG.net]
- 上記で、分かりにくくてすみません、
>1:・ー└等の1文字と、半角スペース3つ以上のいずれかで文字列を分解したい この「1:」は気にしないでください。 また、re.subで上手く行ったのは、1つめに書いた [・ー└]|( ){3,} です
- 29 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 01:31:56.09 ID:vtK5EVRE.net]
- [・ー└]|( ){3,} → 合ってる
[・ー└( ){3,}] → 間違い [・ー└(( ){3,})] → 間違い 文字コードが uft-8 以外で書かれている文書を扱ってるとか? そうなら python 文字コード でググって文書を uft-8 に変換してから split
- 30 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 02:52:26.84 ID:CiQU0O+7.net]
- ( → (?:
- 31 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 04:06:28.28 ID:PbEjqT95.net]
- >>29
そもそも単文字なんだしグループにする必要なくね?
- 32 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 09:04:44.07 ID:GPq3lXDW.net]
- >>28
上でも書かれているが()は要らんよ。 import re s='これ・はテスートなの└かテ スト なの です' print(re.split('[・ー└]| {3,}',s))
- 33 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:12:43.95 ID:A6BSd3Zu.net]
- 正規表現に生の半角スペース使うのは一見気づきにくくて余り好きじゃないなぁ
\x20 にしない人多いのかな
- 34 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:36:58.04 ID:6wJ0temu.net]
- 俺は生派
\sを使う人もいるけど俺は嫌
- 35 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:39:17.25 ID:GPq3lXDW.net]
- エディタの設定で可視化もできるしね。>半角スペース
- 36 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:39:47.05 ID:6wJ0temu.net]
- this is a pen
を this\x20is\x20a\x20pen とかも嫌
- 37 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 10:56:31.05 ID:A6BSd3Zu.net]
- 文章になってるものまで生で使わないと言うわけじゃないけどな
ブラケットの中で使う場合なんかは生は避けたいわ [ ]とかよく見かけるけど、分かりづらい なお、\sは半角スペースを含むけどそれ自体じゃないので普通は区別して使うでしょ
- 38 名前:29 mailto:sage [2021/11/17(水) 11:01:36.46 ID:vtK5EVRE.net]
- this[ ]is[ ]a[ ]pen
proxomitronのフィルタ職人をやってるときはこうやってた 今だと this\ is\ a\ pen かな? 使ったことないけどw \s は環境によっては全角スぺにマッチするから気を付けないとね
- 39 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 11:32:27.19 ID:6wJ0temu.net]
- >>37
エディタ上でははっきりと区別がつくけど こんな所へ貼る場合は確かに分かり難いね まあこの場合は目的が分かってるので分かりやすいとも言えるけど
- 40 名前:デフォルトの名無しさん mailto:sage [2021/11/17(水) 20:33:29.63 ID:vtK5EVRE.net]
- Jane用の正規表現を掲示板に貼るときにはタブ文字のところを 【tab】 って
書き換えて貼ってたなぁ、しかしJane自体が廃れて使うことが無くなった
- 41 名前:27 [2021/11/17(水) 23:51:26.36 ID:pGjzwEdG.net]
- 27です
こんなにも早く教えてくださってとても助かりました! ()が要らなかったんですね。勉強になります! ありがとうございました!
- 42 名前:29 mailto:sage [2021/11/19(金) 20:58:09.22 ID:rZqXBgxj.net]
- これの検証してみた
Absence operator is broken #150 https://github.com/k-takata/Onigmo/issues/150 ・検証コード (ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x64-mingw32]) p /(?~a.*[bv].*c)/.match("000a111v222c333b444c555") ・結果 #<MatchData "000a111v222c333b444"> a〜v〜c を含んでしまってるのでバグで確定 原因は最初にマッチした段階で検索を打ち切ってしまっていて 別のパターンを見逃している 別のパターンを見つける必要があることは非包含オペレータ提案者さんの論文で 図付きで説明されてるけどこれを見落としてしまったオチ? 直すには論文通りに実装すれば良いだけなので直せないことは無さそう 自分がプログラミング出来れば直したいけどミジンコなので手も足も出ず.. ------------------------------------------------------- >>41 おつー
- 43 名前:29 mailto:sage [2021/11/19(金) 23:35:42.78 ID:rZqXBgxj.net]
- ついでにもう1つだけ
Use of \K when the string to match after \K can be empty #152 https://github.com/k-takata/Onigmo/issues/152 これは \K を使ってゼロ幅マッチになった場合に次の検索開始位置が 予期せず1つ進んでしまう問題のようだ gsubの仕様かなと思ったけど (?<=\w) と \w\K の2つが違う結果になるのは 違和感ある、\K での ゼロ幅マッチ後の pos を進まないようにすれば直りそう takata先生の代わりにちゃちゃっと始末してくれるスーパーハカーさん募集
- 44 名前:29 mailto:sage [2021/11/20(土) 00:06:32.69 ID:dCkHZW0G.net]
- \K より前で文字を消費していない場合は pos は進まないようだ
/\K/ → pos進まず /.\K/ → 予期せずpos進んでしまう
- 45 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 13:49:08.95 ID:S4adbGs3.net]
- >>42
イシュー150の起票者がオリジナルの鬼車作者さんやんけw
- 46 名前:29 mailto:sage [2021/11/20(土) 14:09:45.26 ID:dCkHZW0G.net]
- >>45 そうなんだよね、だから気になってた
------------------------------------------------- >>42 とは別の検証をしてみた p /(?~a.*b.*c|222)/.match("000a111b222c333") #<MatchData "000a111b22"> これは期待通りにマッチした、これが正しく動くということは 論文の読み落としではないね、失礼しました 問題は同一posでマッチ文字数が最短になるマッチを見つけなければいけないが それをしていないことみたいだ この処理って結構な処理量になりそうだけど大丈夫なのかな? オペレータ提案者さんのサンプルコードではどうなってるんだろ? プログラムが読めないから対応出来てるのか分からない.. あまりに重いようなら量指定子を使えるようにしたほうが良いかもしれない .* を .{0,1000} に書き換えて処理量を限定させるのと同じで (?~abc){0,1000} みたいな指定が出来るようにすれば..
- 47 名前:29 mailto:sage [2021/11/25(木) 18:40:51.33 ID:QsU6pq8j.net]
- Onigmo のバグの原因となった個所が判明したので書いておこう
正規表現における非包含オペレータの提案 ttps://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-paper.pdf この論文のサンプルコードに下記のメソッドがある def try_alt(r1, r2, str, pos, &block) try(r1, str, pos, &block) try(r2, str, pos, &block) end これは正規表現で言うと r1|r2 の "|" にあたる動作をする部分のメソッドだが このサンプルコードでは r1 のマッチが成功した後でも必ず r2 を試す仕様になっている しかし Onigmo の検索方式では r1 がマッチした後に正規表現の最後までマッチが 成立した場合には r2 が試されない仕様になっている これにより r2 を通る一部パターンが見落とされる結果となりバグとして出現した 論文中の非包含オペレータのメソッドである def try_absent(r, str, pos) は 上記の def try_alt を使う前提で書かれたものなのでこれをそのまま Onigmo には移植出来ない サンプルコード方式での処理量を考えるとおそらくこれとはまったく別のアルゴリズムで動く 動作の軽いメソッドを自作しないと Onigmo には導入出来ないのではないだろうか..
- 48 名前:29 mailto:sage [2021/11/25(木) 19:06:15.35 ID:QsU6pq8j.net]
- 論文3ページ目の右半分に 表3 がある
r1r2 | [:seq, r1, r2] ここの :seq は r1 と r2 を連接するという意味で使われているが サンプルコードでは :seq を使わず :cat になっている ここで疑問なのが何故違う名前を使うことになったのか? である (仮説1) 非包含オペレータ提案者さんは猫が好き ごろにゃんしながらバックトラックにゃん である (仮説2) cat は Unix でよく使われる連結コマンドであり catenate から由来する これもなかなかの難問である
- 49 名前:デフォルトの名無しさん [2021/11/29(月) 20:58:37.88 ID:ZJywLyaD.net]
- ある短い英単語が文章に含まれているかどうかを判定したいのですが、
他の英単語の一部に含まれているようなときは除外したいです。 例:検索単語:ap、 ○:ap is short of... ○:これはapです NG:pen pineapple apple pen つまり、『単語の前後に文字がある場合は、それらがアルファベットでない』という条件を加えたいのですが、 これの実現方法に詰まっています。 [^a-zA-Z]ap[^a-zA-Z] の至るところに、.*や*や+を様々なパターン試したのですがうまく行かず。。。 うまく行ったと思っても、指定単語が文頭や文末に来て、前後のどちらかに文字がないときはうまく行きません。 どなたかご教授頂けませんでしょうか。
- 50 名前:デフォルトの名無しさん mailto:sage [2021/11/29(月) 21:09:24.49 ID:be+dUloq.net]
- >>49
(?<![a-zA-Z])ap(?![a-zA-Z]) もし英文のみなら \bap\b でも可
- 51 名前:デフォルトの名無しさん [2021/11/29(月) 21:22:37.81 ID:ZJywLyaD.net]
- こんなに早く教えていただいてありがとうございます。
試してみたのですが、うまく行きませんでした。検証方法間違ってますでしょうか? ---------------- value="abc ap abc" pattern = "(?<![a-zA-Z])ap(?![a-zA-Z])" re.match(pattern, value) ※何も取得できず ----------------
- 52 名前:デフォルトの名無しさん mailto:sage [2021/11/29(月) 21:35:41.08 ID:7mT4ej7+.net]
- re.matchじゃなくてre.search
matchは先頭位置からしかマッチするか調べない
- 53 名前:デフォルトの名無しさん mailto:sage [2021/11/29(月) 21:41:33.24 ID:be+dUloq.net]
- ところで
ap'sとかap-dataとかもろもろの扱いはいいのか?
- 54 名前:デフォルトの名無しさん [2021/11/29(月) 22:02:03.30 ID:ZJywLyaD.net]
- >>52
ありがとうございます!うまく行きました! 大変初歩的な間違い、失礼いたしました。。。ご助言ありがとうございます >>53 ご指摘ありがとうございます。そこの考慮をしていませんでした。 今回はたまたま問題ありませんでしたが、これからは考えます。 ありがとうございました。
- 55 名前:29 mailto:sage [2021/12/06(月) 21:53:22.08 ID:S5ugmQVz.net]
- rubyのコードが読めたから調子に乗って鬼車のソースからのインストールと
simple.c の実行に挑戦してみたら成功するまで10日くらいかかった win10 パソコンで VMware を動かして中に ubuntu 20.04 を入れて oniguruma 6.9.7 をインストした あとは C言語で書かれたサンプルコードを解析すれば oniguruma の 色々なオプションを試せるようになる.. Unix も C言語 も知らないしプログラマでもないミジンコだけどググりまくれば 意外と何とかなりそうだ、次は Onigmo を入れよう..
- 56 名前:29 mailto:sage [2021/12/07(火) 02:27:56.29 ID:gbEOg3vj.net]
- Onigmo もインスト出来たけど simple.c の実行結果がおかしい
// oniguruma の場合 match at 4 0: (4-14) 1: (5-13) // Onigmo の場合 match at 4 0: (21474836484-55834574862) 1: (0-0) インスト失敗か? README_japanese に書いてある "onig-config --cflags" での構成確認は oniguruma と Onigmo で同じコマンドだけど共通のコマンドなのかな? 両方入れたからどっちの構成を確認してるのか分からない
- 57 名前:29 mailto:sage [2021/12/07(火) 04:28:00.86 ID:gbEOg3vj.net]
- ↑の構成確認の件はOnigmo の README.ja の 111 〜 114 行目 が
oniguruma の説明のままなだけだった、takata先生更新を.. .ja が付いてない英語版も同様です github の Onigmo のトップページでは正しく "onigmo-config --cflags" と書いてありました
- 58 名前:29 mailto:sage [2021/12/07(火) 15:13:24.06 ID:gbEOg3vj.net]
- ↑ の件ですが README.ja の 61 行目の
> 以下、鬼車の README.ja: を見落としておりました、鬼車の説明書きのコピペだったのね..orz >>56 の Onigmo の結果がおかしかったのも↓で正常動作しました 間違い: cc sample.c -L/usr/local/lib -lonig 正しい: cc sample.c -L/usr/local/lib -lonigmo お騒がせして申し訳ありません m(__)m
- 59 名前:29 mailto:sage [2021/12/14(火) 23:52:24.48 ID:hRBVXs3o.net]
- perl5と鬼車、鬼雲の動作を比べて遊んでたらperl5の変な挙動を発見
\d{1} の {1} を付けるか消すかで結果が変わる --------------------------- my $str = '12'; $str =~ s/(?<name>\d{1}){0}(?&name)/<match=$&>/; print "$str\r\n"; --------------------------- ↓{0} での定義を (?(DEFINE) ... ) に変えると正常動作する --------------------------- my $str = '12'; $str =~ s/(?(DEFINE)(?<name>\d{1}))(?&name)/<match=$&>/; print "$str\r\n"; --------------------------- perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread
- 60 名前:29 mailto:sage [2021/12/15(水) 05:01:54.34 ID:+lf8SrwJ.net]
- ・ {0} での定義ではマッチせず
--------------------------- my $str = '123'; $str =~ s/(?<name>123){0}(?&name)/<match=$&>/; print "$str\r\n"; ・DEFINEを使うと正常動作する --------------------------- my $str = '123'; $str =~ s/(?(DEFINE)(?<name>123))(?&name)/<match=$&>/; print "$str\r\n"; --------------------------- perl5 では {0} で定義するのは想定外?
- 61 名前:29 mailto:sage [2021/12/16(木) 22:14:43.92 ID:0VSoy2O4.net]
- onigurumaの非包含オペレータの動作が論文と違う
正規表現 ^(?~abc) をテキスト 0123abcd に対して検索して比較すると.. 論文の動作 : 0123ab がマッチする onigurumaの動作 : 0123 がマッチする 逆に Onigmo は分岐が含まれない正規表現なら論文通りに動作するので この場合は論文と同じ動作をする 動作的には ((?!abc).)* と同じなので論文で指摘されているように 形式言語理論から逸脱しているし、後ろに続く正規表現によっては マッチ出来ずに検索が終わってしまうケースが発生する 例、 ^(?~abc)c 非包含オペレータは提案から14年経ってもなお未完のままということに..
- 62 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 13:32:58.43 ID:N/8v4GiQ.net]
- >>61
^(?~(?<=ab)c)
- 63 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 15:12:28.90 ID:wvP9ttxM.net]
- 記号が同じなだけで名称も説明上の動作も違うからそもそも似て非なる別物
ではなくて?
- 64 名前:29 mailto:sage [2021/12/17(金) 19:59:50.60 ID:t+q3CK3B.net]
- >>62 それ反則w ちなみにこんなのもある
Perl正規表現雑技 : ある文字列を含まないものにマッチする正規表現 www.din.or.jp/~ohzaki/regex.htm#Without >>63 その解釈で間違ってないと思う、oniguruma の (?~abc) は仕様が 決まった時点で別物だね、(?:(?!abc).)* の拡張版と言ったほうがしっくりくる 実用上は oniguruma 版のほうが使いやすそうだしあえて変えたんだろうね
- 65 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 20:49:06.88 ID:BDVQn7Pa.net]
- いやぁ、、ヒネくれちゃっただけでしょ
- 66 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 06:09:19.30 ID:X6k+U6Sv.net]
- 成果だけ横から頂いてこっちで改変流用するわwおまえ除名なwとか言われちゃったらまあ拗ねもするさ
- 67 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 08:57:20.74 ID:hMGijQ8S.net]
- (?s:^(?=.*(?:トビラ|280|280|[内外]製|純正|公式))(?=.*(?:ガイジ|発狂|長文|必死|キチガイ|キチキチ)))
これが効かないんすけど何か間違えてますか? https://egg.5ch.net/test/read.cgi/android/1638738146/
- 68 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 10:54:25.85 ID:mCvaVjB9.net]
- 少なくともchmateだとマッチしてる
正規表現と文字列の切り替えの設定間違えてるんじゃないの
- 69 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 20:18:42.66 ID:k8SAGnLj.net]
- ●Regular Expressionの使用環境
サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0) ●検索か置換か? 検索 ●説明 IPv4アドレスに一致させたい ●対象データ 2021.12.19.06 192.168.1.1 ●希望する結果 192.168.1.1 下の正規表現だと2021.12.19.06の021.12.19.06に一致していまいました。 /(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/k
- 70 名前:69 mailto:sage [2021/12/20(月) 20:22:55.66 ID:k8SAGnLj.net]
- すみません
対象データの訂正です 最初と最後に文字列があります ●対象データ AB2021.12.19.06E CD192.168.1.1E
- 71 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 20:25:28.02 ID:cLNhpahP.net]
- https://www.google.co.jp/search?q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE+IPv4
- 72 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 20:55:56.04 ID:k8SAGnLj.net]
- 度々すみません
訂正があったので再度質問させてください ●Regular Expressionの使用環境 サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0) ●検索か置換か? 検索 ●説明 IPv4アドレスに一致させたい 条件 前後に何も含まない場合 前後に[]を含む場合 前後に半角を含む場合 ●対象データ A2021.12.19.06B B192.168.1.01B 192.168.1.1 [192.168.1.1] _192.168.1.1_ ←_は半角空白 ●希望する結果 192.168.1.1 [192.168.1.1] _192.168.1.1_ ←_は半角空白 下の正規表現だと2021.12.19.06の021.12.19.06に一致していまいました。 /(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/k よろしくお願いします
- 73 名前:72 mailto:sage [2021/12/20(月) 21:00:55.82 ID:k8SAGnLj.net]
- 希望する結果では[]や半角を含まずIP部分だけ一致させたいです
よろしくお願いします
- 74 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 21:13:35.36 ID:cLNhpahP.net]
- (?<![.0-9])(IPv4の正規表現ggrks)(?![.0-9])
- 75 名前:72 mailto:sage [2021/12/20(月) 21:27:00.64 ID:k8SAGnLj.net]
- >>74
ありがとうございます それだとIPv4アドレスではない部分に一致してしまいダメ (?<![.0-9])([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(?![.0-9])
- 76 名前:72 mailto:sage [2021/12/20(月) 21:31:02.39 ID:k8SAGnLj.net]
- >>74
こういった結果を希望しています よろしくお願いします ●対象データ A2021.12.19.06B B192.168.1.01B 192.168.1.1 [192.168.1.1] _192.168.1.1_ ←_は半角空白 ●希望する結果 一致しない 一致しない ←.01という表記が正しくない為 192.168.1.1 ←一致 192.168.1.1 ←[]の中を一致 192.168.1.1 ←前後の半角を除いて一致
- 77 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 21:50:00.81 ID:k8/KZn4u.net]
- [192.168.1.1_
- 78 名前:72 mailto:sage [2021/12/20(月) 22:36:54.07 ID:azxFC8Fx.net]
- >>74
下の通りにしたら出来ました ありがとうございました /(?<![.0-9])(((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]))(?![.0-9])/k
- 79 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 05:04:20.96 ID:DlXpRfUq.net]
- (?<![.\d])(?:(2(?:5[0-5]|[0-4]\d)|1\d\d|[1-9]?\d)\.){3}\g'1'(?![.\d])
- 80 名前:72 mailto:sage [2021/12/21(火) 12:15:02.94 ID:bLPLuUHJ.net]
- >>79
できました ありがとうございました!
- 81 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 12:48:39.34 ID:YqPiCVQe.net]
- (?<![.\d])(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.\g'1'){3}(?![.\d])
- 82 名前:72 mailto:sage [2021/12/21(火) 12:54:34.52 ID:bLPLuUHJ.net]
- >>81
できました ありがとうございます! みなさん頭いいんですね・・・私は単純な正規表現しか分からず
- 83 名前:72 mailto:sage [2021/12/21(火) 13:04:04.34 ID:bLPLuUHJ.net]
- ちなみに>>79さんや>>81さんの正規表現だと
こういった正規表現チェッカーでは一致しないのは何故なんでしょうか? https://www.debuggex.com/ JavaScriptと表示されているリストをPythonに指定して試しました
- 84 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 16:35:44.32 ID:fKMzp4yd.net]
- 後方参照の記法絡みかなあ
- 85 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 16:46:05.57 ID:ehDQ8UlO.net]
- ¥をつかうか、$を使うかは、なかなか思い出せないから困る
- 86 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 18:31:43.92 ID:2Q9XRXAv.net]
- >>79 >>81
サクラエディタ(というか鬼車や鬼雲、bregonig.dllの正規表現) の\dは全角数字にもマッチするから [0-9]で検索すべき 全角が含まれてしまう話は\s,\wなども同様 サクラエディタBBSでの高田先生の過去発言 https://sakura-editor.github.io/bbslog/sf/ansi/4874.html#4887
- 87 名前:72 mailto:sage [2021/12/21(火) 18:47:26.57 ID:bLPLuUHJ.net]
- >>86
なぜか分かりませんが全角には一致しなかったので大丈夫でした
- 88 名前:72 mailto:sage [2021/12/21(火) 18:54:30.58 ID:bLPLuUHJ.net]
- >>86
よく確認したら全角にも一致していました すみません
- 89 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 19:19:25.77 ID:N0HCE/E4.net]
- 左端に(?a)をつければ\dのままでも?
- 90 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 19:35:57.99 ID:aQSGSn8P.net]
- Meryの\dは半角のみ
正規表現まわり含め検索はサクラよりMeryのが良いな サクラは複数行検索不可だし
- 91 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 20:39:47.81 ID:wzddSm6Q.net]
- ●Regular Expressionの使用環境
サクラエディタ(bregoing.dll Ver4.20 with Onigmo 6.2.0) ●検索か置換か? 検索 ●説明 IPv6アドレスに一致させたい 条件 ●対象データ 2603:1096:0604:00bc:0000:0000:0000:0009 (2603:1096:0604:00bc:0000:0000:0000:0009) ←半角括弧の中だけに一致させたい _2603:1096:0604:00bc:0000:0000:0000:0009_ ←_は半角スペースの中だけに一致させたい 2603:1096:604:bc::9 (2603:1096:604:bc::9) _2603:1096:604:bc::9_ ●希望する結果 2603:1096:0604:00bc:0000:0000:0000:0009 2603:1096:0604:00bc:0000:0000:0000:0009 2603:1096:0604:00bc:0000:0000:0000:0009 2603:1096:604:bc::9 2603:1096:604:bc::9 2603:1096:604:bc::9 ○試した正規表現 下の正規表現だと最後の:以降(上の例だと最後の9)が一致しませんでした (\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})? よろしくお願いします
- 92 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 23:04:26.56 ID:lAwv+hLw.net]
- >>86
鬼車なら、オプション指定(?D)でdigitをASCIIだけにで
- 93 名前:きる
(?D)..¥d.. [] - [ここ壊れてます]
- 94 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 00:48:17.09 ID:zQqayV78.net]
- 正直\dを[0-9]以外にもマッチさせる仕様ってどういう時に便利なのか今一つ分からん
- 95 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 03:24:15.78 ID:dkzRMG/Q.net]
- [0-469bc:]++
- 96 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 09:44:58.18 ID:dK2CjfaN.net]
- 住所にしろ日付にしろ上から順に書いた方が齟齬が生じないだろうに
西洋文化圏のやつらは何が何でも省略しなきゃ気が済まないんだろうな こんなもん略記許さない仕様の方が逆に全体的な効率は良いだろうに フロッピーディスクの時代なら少しでも容量減らしたいのは分からなくも無いけど
- 97 名前:91 mailto:sage [2021/12/22(水) 10:25:10.40 ID:giUFecUL.net]
- >>94
ありがとうございます IPv6アドレス以外には一致させたくないのです ●対象データ 1 01 2603:1096:0604:00bc:0000:0000:0000:0009 (2603:1096:0604:00bc:0000:0000:0000:0009) ←半角括弧の中だけに一致させたい _2603:1096:0604:00bc:0000:0000:0000:0009_ ←_は半角スペースの中だけに一致させたい 2603:1096:604:bc::9 (2603:1096:604:bc::9) _2603:1096:604:bc::9_ ●希望する結果 2603:1096:0604:00bc:0000:0000:0000:0009 2603:1096:0604:00bc:0000:0000:0000:0009 2603:1096:0604:00bc:0000:0000:0000:0009 2603:1096:604:bc::9 2603:1096:604:bc::9 2603:1096:604:bc::9
- 98 名前:デフォルトの名無しさん [2021/12/22(水) 11:10:46.72 ID:j6Uulo2p.net]
- >>95
個人的な本名や住所が先頭に来るのは西洋文化圏というよりイスラム圏も含めた地中海世界 プログラミング言語だと名前空間が上から順で統一されてるのに不思議だよね
- 99 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 11:53:44.33 ID:dK2CjfaN.net]
- >>96
>>74と同じ手法でやればいいじゃない
- 100 名前:91 mailto:sage [2021/12/22(水) 12:01:15.82 ID:giUFecUL.net]
- >>98
ありがとうございます どういうことでしょうか?例えば>>94さんの例を元にして下の通りにしてもIPv6以外に一致してしまいます (?<![.0-9])([0-469bc:]++)(?![.0-9])
- 101 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 16:45:06.37 ID:rmiXIWtW.net]
- IP アドレスの正規表現ぐらい、公式が発表しているのでは?
|

|