- 1 名前:デフォルトの名無しさん [2017/03/15(水) 02:04:35.47 ID:e01p03UP.net]
- Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part13 echo.2ch.net/test/read.cgi/tech/1415149975/ 次スレは>>980宜しく 天ぷら等2以降
- 730 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 18:52:26.91 ID:BZlL2mTg.net]
- if ( "K" =~ /\A\x{212A}\z/i ) true
if ( "K" =~ /\A\x{212A}\z/il ) false
- 731 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 21:22:21.15 ID:BZlL2mTg.net]
- if ( "\x{212A}" =~ /[[:print:]]/ ) true
if ( "\x{212A}" =~ /[[:print:]]/a ) false
- 732 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 00:04:00.21 ID:EY2CMtcP.net]
- \d{0,32766}
# ok \d{0,32767} # error "Quantifier in {,} bigger than 32766 in regex;"
- 733 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 00:21:29.46 ID:EY2CMtcP.net]
- # \d{0,} は 32766回 を超えてマッチ可能
my $str = ""; for ( $count = 0; $count < 33000; $count++) { $str = $str."0"; } print "\$str\.length = " , length($str) , "\n"; if ( $str =~ /\A\d{0,}\z/ ) { print "true\n"; } else { print "false\n"; } # 結果 # $str.length = 33000 # true
- 734 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 18:21:06.77 ID:EY2CMtcP.net]
- # 検索表現の途中にある \G をマッチさせる
my $str = 'abcde'; $str =~ /abc/g; if ($str =~ /abc\Gd/){ print "true\n"; } else { print "false\n"; }
- 735 名前:デフォルトの名無しさん mailto:sage [2018/11/13(火) 00:16:05.06 ID:QabZTjVa.net]
- # (?1) の直前に (?i) を置いても効かない
if ( "Aa" =~ m/(?i)(A)(?1)/ ) { print "true <$1>\n"; } else { print "false\n"; } # 結果:true <A> if ( "Aa" =~ m/(A)(?i)(?1)/ ) { print "true <$1>\n"; } else { print "false\n"; } # 結果:false
- 736 名前:デフォルトの名無しさん mailto:sage [2018/11/13(火) 05:19:20.83 ID:QabZTjVa.net]
- ## (?{code}) を使って >>697 の置換
if ( "ybrybrb" =~ / \A (?| (?<赤>r)(?{ "aka"; }) | (?<青>b)(?{ "ao"; }) | (?<黄>y)(?{ "ki"; }) )* brybrb ## バックトラックに対応出来るか試す \z /x ) { print "true. Color <${1}> is <${^R}> .\n"; } else { print "false.\n"; } ## 結果: true. Color <r> is <aka> . ## バックトラックの対応、成功
- 737 名前:デフォルトの名無しさん mailto:sage [2018/11/13(火) 21:32:36.34 ID:QabZTjVa.net]
- # 仲間外れを探せ
if ("\x{1990}" =~ / \N{U+1990} #\N{1990} #\N{NEW TAI LUE LETTER HIGH NA} /x){ print "match.\n"; } else { print "false.\n"; }
- 738 名前:デフォルトの名無しさん [2018/11/14(水) 10:41:07.07 ID:Hh1ptiAj.net]
- 717
- 739 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 14:37:49.07 ID:duOGmOFb.net]
- ワロタw
- 740 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 18:45:40.17 ID:I91AeKub.net]
- このクイズだか検証だかよくわからんの書き連ねてるのは何なの?
一人で無意味に書き連ねてるの?誰かとやりとりしてるの?
- 741 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 23:41:31.78 ID:cpUdYoRF.net]
- 正規表現の勉強をしながら気付いたことをメモってるだけです
基本的には一人でやってます 仲間が欲しい...
- 742 名前:デフォルトの名無しさん mailto:sage [2018/11/14(水) 23:44:34.67 ID:CNd6PM4x.net]
- ここはお前のチラシの裏なのか
ある程度まとまってんならともかくメモ書きなら他所でやれよ
- 743 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 00:11:59.19 ID:Ow4iH1sO.net]
- 需要ないかな?無いならやめます
- 744 名前:デフォルトの名無しさん mailto:sage [2018/11/15(木) 22:32:34.48 ID:IM0UsOCP.net]
- 無いよ
- 745 名前:デフォルトの名無しさん mailto:sage [2018/11/16(金) 17:20:00.59 ID:eADG8kUk.net]
- bregonig.dll の (?a)\w の処理速度が遅い
(?u)\w と同じ速さ \s や \d や [a-zA-Z_] より4倍の遅い 改善の余地ありそうだね
- 746 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 03:22:15.33 ID:YADh6pBI.net]
- ## (?(R1)yes|no) のサンプルコード
if ("abc23yz" =~ / \A ( # $1 ( # $2 a(?1)z | b(?2)y | c(?(R1)1|2)(?(R2)3|4) ) # $2 ) # $1 /x){ print "match. <$&> \n"; } else { print "false.\n"; } # 結果: match. <abc23yz> # aとzの間にあるcは (?1) の中でマッチしているが # bとyの間でもあるため (?2) の中でもある # この場合はcを直接覆っている (R2) だけがyesになる # 直接でない (R1) はnoになる
- 747 名前:デフォルトの名無しさん mailto:sage [2018/11/17(土) 12:49:09.25 ID:Oiq/x6oK.net]
- いつまで続くの?
- 748 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 19:34:31.80 ID:CU3gUCH4.net]
- ●Regular Expressionの使用環境
C# ●検索か置換か? 置換 ●説明 先頭の全角スペースのみを置換したい 先頭の全角スペースは1文字の場合もある ●対象データ ああああ あ あ あ あ あ ●希望する結果 空空空ああああ あ あ あ あ あ
- 749 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 23:39:43.26 ID:UsYfXb0d.net]
- >>730
Regex.Replace(str, @"(?<=^\s*)\s", "空");
- 750 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 23:41:52.91 ID:UsYfXb0d.net]
- あ全角スペースか
\sを全角スペースに変えて
- 751 名前:デフォルトの名無しさん mailto:sage [2018/11/22(木) 01:15:55.43 ID:YNRtrxPu.net]
- 可変長の戻り読みは便利だけどコールバックで処理するのが普通じゃないかな
https://ideone.com/4l8abQ
- 752 名前:729 mailto:sage [2018/11/22(木) 03:09:11.69 ID:YAZbwzDX.net]
- >>733
たしかにそっちの方が倍くらい速かった ちなみに正規表現関係ないけど var trimed = str.TrimStart(' '); var replaced = new string('空', str.Length - trimed.Length) + trimed; とか var sb = new StringBuilder(str); for(int i = 0; i < sb.Length; i++) if (sb[i] == ' ') sb[i] = '空'; else
- 753 名前:break;
とかにするとさらに10倍以上速かった 正規表現使わないでもいい時はなるべく使わないほうがええね [] - [ここ壊れてます]
- 754 名前:デフォルトの名無しさん mailto:sage [2018/11/22(木) 11:43:47.30 ID:sD3Vu3lJ.net]
- >>731-734
どうもありがとうございました
- 755 名前:デフォルトの名無しさん mailto:sage [2018/11/26(月) 03:08:54.11 ID:bvNwlvbS.net]
- Regex.Replace(str, @"\G ", "空");
でもいけるよ
- 756 名前:デフォルトの名無しさん [2018/11/26(月) 06:49:56.12 ID:OBhrl1nm.net]
- >>736
・・・っ、すごい。サクラエディタとかでも使える。 \Gのありがたみ知らなかった。私は、まだまだ精進が足りないようだ。
- 757 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 00:09:50.92 ID:5gbDlA47.net]
- \Gを知らないのに正規表現を使いこなせるということはproxomitronのユーザーさんかな
- 758 名前:デフォルトの名無しさん mailto:sage [2018/11/28(水) 15:10:22.46 ID:N4CCGDXj.net]
- \Gの使い方を覚えたら>>716が面白く感じるかもね
知ってれば今更感しかないが
- 759 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 02:42:35.12 ID:Fz25AUlj.net]
- >>507-508
すごい こういう書き込みが初心者の質問とその回答で埋もれてしまうのはもったいない 質問スレとは別に正規表現の本スレらしいスレがあるといいな
- 760 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 02:52:05.30 ID:rs9fzmaE.net]
- 頑張ったなぁとは思うけど https://regex101.com/ じゃあかんかったか?とも思う
というかリンク貼れんの? https://goo.gl/M2Fn68.info
- 761 名前:デフォルトの名無しさん mailto:sage [2018/11/29(木) 08:19:27.68 ID:nDdllTwV.net]
- 自分で立てればいいのになんで他人頼みなの?
- 762 名前:デフォルトの名無しさん mailto:sage [2018/12/02(日) 03:28:37.05 ID:s0yCsMa3.net]
- >>740
じゃあ俺が立てるわ、テンプレの準備にちょっとかかるが
- 763 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 16:06:50.58 ID:7G2k61ed.net]
- twitter.com/munesuk
enya_go/status/1071188833515954176 先輩w
- 764 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 20:04:57.14 ID:RNQqcEtu.net]
- アンド検索をしたいのですが、どう書けばいいでしょうか
^(?=.*あああ)(?=.*かかか).*$ このコードを見つけました あああ と かかか の含まれる行がヒットします ただ、ロジックがちょっとわかりません 先読みをつかっているのですが、先読み対象の語が指定されていません これはどういうことでしょうか 分かりやすい解説サイトでもあれば教えてください
- 765 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 20:32:25.49 ID:Dx33rAX6.net]
- このへんかな
>正規表現で論理積(AND)を実現する >https://qiita.com/n4o847/items/dbcd0b8af3781d221424 自分流のちょっと乱暴な理解解釈だと 1. (?=検索対象) は、この条件が満たされないと後続のマッチを調べない 2. (?=検索対処) 自体は、この条件が満たされてた時点である意味消滅したかのようにふるまう って動きを取るような感じ ちなみにAND検索ができるgrepツール(TresGrep)がどんな正規表現を組み立てるか調べてみたら 「xxx&yyy&zzz」 ↓ 「xxx.*?(yyy.*?zzz|zzz.*?yyy)|yyy.*?(xxx.*?zzz|zzz.*?xxx)|zzz.*?(xxx.*?yyy|yyy.*?xxx)」 なんてのを吐き出した 安直だけどまあこれも間違ってはいない
- 766 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 20:35:48.50 ID:Dx33rAX6.net]
- あ、先読み対象の語は「^」だけで
「行頭から始まるという条件さえ満たせば何でもよ
- 767 名前:い」と指定してる []
- [ここ壊れてます]
- 768 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 22:19:09.33 ID:7G2k61ed.net]
- 環境が分からない
何を検索したいのか分からない >先読みをつかっているのですが、先読み対象の語が指定されていません ??? 指定されてないって何のことだろう、意味不明 正規表現うんぬんの前にまともな質問の仕方を学ぶべき
- 769 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 22:26:59.96 ID:RNQqcEtu.net]
- >>746
先読み対象は行頭ということですね ^(?=.*あああ) これだと意味としては 「あああの前に行頭が存在すればヒット」 ということになると思います これってもう少しかみ砕いた表現にできませんか? まだ、理解が追い付いてないです 行頭が存在すればヒットということは、「行の中にあああがあればヒット」と同じことですか?
- 770 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 23:05:31.04 ID:hZepSGXS.net]
- >>749
^は検索位置を示すもので、先頭を表す記号、 (?=)は先読みで検索開始位置を移動しないもの つまり、 ^(?=.*あああ) は、先頭から(改行までの間に)文字列「あああ」がある場合 (先読みなのでマッチ後も次の検索開始位置はまだ先頭のまま) よって ^(?=.*あああ)(?=.*かかか) は、先頭から(改行までの間に)「あああ」があり、且つ先頭から「かかか」がある場合 .*$は不要だが、付けると、改行が存在すると絶対マッチしなくなる点が異なる
- 771 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 06:54:41.50 ID:C3Qast1U.net]
- ↑かっこを二つならべると、()と()という感じで、アンドになるんでしょうか?
あと (?=)は先読みで検索開始位置を移動しないもの の部分なんですが、検索開始位置を移動しないというのはどういうことでしょうか ?=キーワード で設定した場合、キーワードの相対位置から前を検索する、という認識でした
- 772 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 08:43:46.17 ID:UT294bNs.net]
- 質問者は正規表現の基礎知識が足りてないと思われる
たとえるなら、(?=)の先読みは高校受験レベルで求められる英文法だとすると 質問者の場合は入門レベル(そもそもの基本ルールとか「.*」とか)の知識がごそっと抜けてる なのでここまで出てきた説明を読んでもちんぷんかんぷんにしかならないのだろう ちょっと遠回りになるけどちゃんと正規表現の基礎を理解したほうがいい https://qiita.com/jnchito/items/893c887fbf19e17d3ff9 あたりを最終回(その4)まで読め それでも理解できないなら、貴方には正規表現を扱うのは無理だからあきらめろ
- 773 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 09:50:40.98 ID:vJutpfX/.net]
- >>751
()()でandになるわけではなく、()の次に()があるかどうかとなる(順序関係ができている) ^(a)(b)と書くと、abにはマッチするがaやbやbaにはマッチしない これは、^(a)がマッチした時点で検索位置がaの次に移動しているためである ^(?=a)(b)と書くと、何もマッチしなくなる これは先頭からaが見つかった場合、検索開始位置が移動しないため(?=a)を検索する前のまま(つまり先頭)になっている 次にbが先頭にあればいいわけだがそこにはaがあるからマッチしない
- 774 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 10:39:42.84 ID:bsA2M6bZ.net]
- ID:vJutpfX/
頭が良すぎて教えるのが下手なパターン バカ語で話さないと通じないよ
- 775 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 10:51:59.84 ID:bsA2M6bZ.net]
- こんな最低限のこともググらず、自分で努力せずに人に聞くようなのに
教えてはいけないと思う、居ついてしまうからエサを与えないで欲しい
- 776 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 11:55:43.32 ID:C3Qast1U.net]
- >>753
動かしながら覚えてみます ありがとうございます
- 777 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 12:38:27.41 ID:H3JhKeet.net]
- 動かしながら覚えるんじゃなくて
>>752でも何でも良いけど、説明読んで覚えて欲しい 中途半端な事してるから、>>751みたいに間違った解釈になるんでしょ
- 778 名前:744 mailto:sage [2018/12/09(日) 19:23:00.27 ID:i2SuH64K.net]
- うーん、一応はレス内容から質問者がどの程度内容を理解したか/理解する気でいるか
透けて見えるんだけどね >>746のURLの記事を読んだうえでこの程度のレスしか返ってこず、さらに 最終的には>>756のようなリアクションが返ってきたか 回答して残念な気持ちになったよ
- 779 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 19:57:20.13 ID:sTKdTIE5.net]
- 位置の理解は言うほど易しくはないとおもわれ
正規表現検索とはテキストエディタでカーソルを1つずつ進めながら 合致する文字を1文字ずつ探っていくようなものだというイメージが必要だけど そこをちゃんと説明してるものはあまり見かけない
- 780 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 20:00:27.58 ID:bzQOhihu.net]
- 知恵遅れに場所を移動したらしい
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10200210065 まずは自習しろよw
- 781 名前:デフォルトの名無しさん mailto:sage [2018/12/09(日) 21:49:11.61 ID:bsA2M6bZ.net]
- 回答した人は親切丁寧に回答出来ていたよ、お疲れ様
上にも書いたように頭のいい人にしか理解出来ない回答になっていた 俗にいう分かってる人にしか分からない説明ってやつ 俺はこういうバカに教えるのは得意だから俺が回答を付ければ理解されたと 思うけど注意をスルーされたのでスルーした
- 782 名前:デフォルトの名無しさん mailto:sage [2018/12/10(月) 14:42:13.07 ID:RU/iAdEK.net]
- 知恵袋で質問を4000件以上やりとりしてる人だったのか
それなのに質問の仕方がまったくダメって
- 783 名前:デフォルトの名無しさん mailto:sage [2018/12/10(月) 17:07:38.24 ID:RU/iAdEK.net]
- 質問のペースがおかしい、1日に質問6つしてる
ググるより先に質問してんのか?
- 784 名前:デフォルトの名無しさん mailto:sage [2018/12/10(月) 17:25:29.04 ID:RU/iAdEK.net]
- https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10200202400
おまえらはこんなの相手に一生懸命教えてたのか 自分を安売りしすぎ、もってけ泥棒状態
- 785 名前:デフォルトの名無しさん mailto:sage [2018/12/10(月) 17:25:37.52 ID:RTUhzLAF.net]
- そして回答はアダルトカテゴリのみという…
- 786 名前:デフォルトの名無しさん mailto:sage [2018/12/10(月) 17:29:58.71 ID:RU/iAdEK.net]
- やっぱ質問スレと本スレは分けるべきだな
この流れになると賢い人が来なくなってしまう
- 787 名前:729 mailto:sage [2018/12/10(月) 18:14:05.41 ID:PtRqcV9k.net]
- なんで馬鹿が一匹きただけでそういう話になるんだよ
過剰対応の典型やろ
- 788 名前:デフォルトの名無しさん mailto:sage [2018/12/10(月) 21:59:56.06 ID:RU/iAdEK.net]
- 入門サイトすら読んでないような人の質問とその回答にうんざりして
来なくなった人は大勢いると思うんだがそういう人達が集まれるスレが あったらひょっとしたらすごいスレになるんじゃないかという期待がある 実際はただ過疎るだけなんだろうけどね
- 789 名前:デフォルトの名無しさん mailto:sage [2018/12/11(火) 02:31:31.29 ID:oKdEGQIj.net]
- 隔離スレなんて作るだけ無駄だろ
機能してるところなんて見たこと無い
- 790 名前:デフォルトの名無しさん mailto:sage [2018/12/11(火) 02:44:05.34 ID:4gYtUlOJ.net]
- PCサロン板なら迷惑にならなそうなので立ててみた
【PCサロン】正則表現 part1 mao.5ch.net/test/read.cgi/pc2nanmin/1544462745/l50 基本過疎進行ですが正規表現を使いこなせる人同士で語りたい方はこちらで
- 791 名前:デフォルトの名無しさん mailto:sage [2018/12/13(木) 17:01:35.11 ID:IMhQiOyS.net]
- 回答が付いた。でも微妙におかしい。つっこんであげるべきか?
- 792 名前:デフォルトの名無しさん mailto:sage [2018/12/14(金) 20:59:53.53 ID:DlmPms4F.net]
- ^
(?: (?!あああ|かかか). )*+ (?> (あああ) | かかか ) (?: (?!あああ|かかか). )*+ (?(1)かかか|あああ) .*+$
- 793 名前:デフォルトの名無しさん mailto:sage [2018/12/14(金) 21:11:35.41 ID:DlmPms4F.net]
- ^
(?~あああ|かかか) (?> (あああ) | かかか ) (?~あああ|かかか) (?(1)かかか|あああ) .*$
- 794 名前:デフォルトの名無しさん mailto:sage [2019/01/10(木) 03:02:56.41 ID:mY602DpM.net]
- FirefoxやChromeのブックマークにこれ登録して
https://i.imgur.com/68VCDRV.jpg ブラウザのアドレスバーに re foo|bar|baz と入れると https://regexper.com/#foo%7Cbar%7Cbaz に飛べるようになる 簡易チェッカーとして便利
- 795 名前:デフォルトの名無しさん mailto:sage [2019/01/10(木) 14:50:11.25 ID:Q3mhk3sM.net]
- >>774
いいねw まったく思い付きもしなかったアイデアwww
- 796 名前:デフォルトの名無しさん mailto:sage [2019/01/10(木) 15:21:01.00 ID:Q3mhk3sM.net]
- >>774
chrome on mac だけどブックマークではダメで、設定→検索エンジン→検索エンジンの管理→追加 から登録しないといけなかったわ。
- 797 名前:デフォルトの名無しさん mailto:sage [2019/01/13(日) 18:46:07.60 ID:vFHHKg45.net]
- URL(http|https)の正規表現って難しいのかね
https://mathiasbynens.be/demo/url-regex 38charsのが好きだわ
- 798 名前:デフォルトの名無しさん [2019/01/26(土) 10:17:12.64 ID:rNPVIr5d.net]
- 否定先読み
と言うのがなかなか理解出来ないのですが、 サンプルを動かすと確かに動作するのですが、 今一つ仕組みが分かりません。 どんなふうに理解すれば良いのでしょうか?
- 799 名前:729 mailto:sage [2019/01/26(土) 10:42:36.00 ID:K4a4emwR.net]
- 文字じゃなくて位置(文字と文字の間)に一致すると考えればいい
たとえば abcdef が対象の場合 肯定先読み(?=def)は直後にdefがある位置(cとdの間の位置)に一致する abc[ここ]def 否定先読み(?!def)は直後にdefがない位置に一致する [ここ]a[ここ]b[ここ]cd[ここ]e[ここ]f[ここ] 行頭の^や行末の$も文字じゃなくて位置に一致する
- 800 名前:デフォルトの名無しさん [2019/01/26(土) 11:13:09.45 ID:yVAkGzul.net]
- なるほどthx
- 801 名前:デフォルトの名無しさん mailto:sage [2019/01/26(土) 11:53:37.94 ID:mL4if6wW.net]
- >>779
横からだけど、否定のほうはなるほどだわ 条件を絞るつもりが広げちゃってる場合があるんだな
- 802 名前:デフォルトの名無しさん mailto:sage [2019/01/26(土) 15:19:07.07 ID:exLOU4gz.net]
- 先読みはマッチさせたら、マッチ開始位置に戻るから、
単なる位置指定で、幅を持たない。 単なる条件を追加した、フィルター 否定先読みはマッチしない場合に、マッチ開始位置に戻る 先読みは、マッチ位置の直後の条件を指定するが、 戻り読みは、マッチ位置の直前の条件を指定する
- 803 名前:デフォルトの名無しさん [2019/01/27(日) 10:46:10.47 ID:Th+zYLMn.net]
- >>779
ありがとうございました。 良く分かりました。
- 804 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 10:47:47.80 ID:wg8XKdax.net]
- .netでの正規表現に迷ってます。
次の文字列のとき、"efgh/1"以降に"/"が含まれないときマッチするような正規表現を書きたいのです。 192.168.1.100/abcd/efgh/1 →True 192.168.1.100/abcd/efgh/1/ →False 192.168.1.100/abcd/efgh/12 →True 192.168.1.100/abcd/efgh/123/ →False 192.168.1.100/abcd/efgh/1?p=1 →True 次のような正規表現を試してみましたが、数値1文字しか対応できませんでした。 \/efgh\/[0-9]+(?!\/)
- 805 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 10:57:25.94 ID:DdBbxYrt.net]
- \/efgh\/1[^/]*$
ではダメかな
- 806 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 12:18:39.25 ID:c4Y7c3OH.net]
- >>785でいいと思う
あとスラッシュにエスケープは不要だから/efgh/1[^/]*$ 否定先読みが使いたいなら /efgh/[0-9]+(?!.*/) (?!.*/)はそれ以降/が含まれない位置という意味 (?!/)だと直後に/がない位置という意味だから数字が2文字以上続いたらマッチしてしまう
- 807 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 12:21:15.63 ID:c4Y7c3OH.net]
- ごめん1って決まってるならこれでいいな
/efgh/1(?!.*/)
- 808 名前:782 mailto:sage [2019/01/28(月) 15:51:48.42 ID:wg8XKdax.net]
- >>785-787
ありがとうございます! 正しい判断をすることが出来ました。 数値は1以外もありえるため、次の正規表現を使います。 /efgh/[0-9][^/]*$ /efgh/[0-9](?!.*/) >>786 正規表現の意味まで教えてもらい、本当に助かります。 今後の役に立てていきます。
- 809 名前:デフォルトの名無しさん mailto:sage [2019/01/29(火) 06:11:22.47 ID:mzqJgDrY.net]
- $1
Windows PowerShell Cookbook Regular Expressions Cookbook Perl Cookbook PHP Cookbook Android Cookbook Humble Book Bundle: Programming Cookbooks by O'Reilly (pay what you want and help charity) https://www.humblebundle.com/books/programming-cookbooks
- 810 名前:デフォルトの名無しさん mailto:sage [2019/01/29(火) 06:32:49.85 ID:mzqJgDrY.net]
- Tools for Working with Regular Expressions
RegexBuddy RegexPal RegexMagic More Online Regex Testers RegexPlanet regex.larsolavtorvik.com Nregex Rubular myregexp.com More Desktop Regular Expression Testers Expresso The Regulator SDL Regex Fuzzer PowerGREP Windows Grep RegexRenamer
- 811 名前:デフォルトの名無しさん [2019/01/31(木) 16:07:48.62 ID:Sc+6fvIO.net]
- 誰かこの鬼雲のバグ修正PR投げてあげて
https://github.com/k-takata/Onigmo/issues/106
- 812 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 16:08:40.61 ID:Sc+6fvIO.net]
- https://github.com/k-takata/Onigmo/issues/106
(?(n) (?: X | Y ) ) and (?(n) X | Y ) behavior is same. (?: ) is left out. (?(n) (?: X | Y ) | ) is nomal behavior. This is a solution to a this bug problem. ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32] bregonig.dll Ver.4.12 with Onigmo 6.1.2
- 813 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 00:35:05.11 ID:HRhgNpoV.net]
- 鬼雲には鬼雲を知ろうとすればするほど謎のテキストエディタの
情報が集まってくるという不思議な不具合があるがこのフィックスは不可能 :-)
- 814 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 20:57:23.09 ID:sEA+6w2y.net]
- 今日元号の改正の準備で日付関連のコード書いてきたんだけど
>>697の置換が出来ると便利だったなという所があった 再帰が使えるのにこれが使えないのはバランス感覚に欠ける気がします どうしてこうなった?
- 815 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:14:07.01 ID:vSZ9R6NM.net]
- 先読みの(?=huge)をつけると、後方がキャプチャーされません
そもそも前方に文字のない?=って使い方あってるでしょうか? ちなみに言語はVB6です
- 816 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:19:48.81 ID:heD+eXgL.net]
- Are you japanese?
Your japan language is strange. Please show me sample codes.
- 817 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 01:39:37.63 ID:bUFEpZHr.net]
- あなたの英語も変ですよ。
日本人はJapaneseとキャピタライズしてください。 日本語もjapan languageではなくJapanese languageです。 Japaneseだけで日本語という意味になりますが、前の文で日本人という意味で使っているのでlanguageを付けるのはいい判断でした。 また最後の文は、どうしても複数の例を見たいことを強調するのでない限りcodesではなくのcodeがふつうです。 不定冠詞のaも付けません。(絶対にただひとつの例だけ欲しいのでない限り)
- 818 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 02:16:45.79 ID:heD+eXgL.net]
- 自分の英語力は小学生相当なのでこんなもんです
教えてくれてありがとね
- 819 名前:デフォルトの名無しさん [2019/03/13(水) 02:29:04.73 ID:Z/ka/TFK.net]
- irregular expression, exactly.
- 820 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 08:53:04.20 ID:heD+eXgL.net]
- I am good at irregular expression.
- 821 名前:デフォルトの名無しさん [2019/03/13(水) 14:12:32.68 ID:ZUOT1OTB.net]
- nativeのひとに「あなた英語上手ですね」って言われても誉め言葉じゃないからな
その時点で下に観られてる
- 822 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 17:54:44.14 ID:k53fNhgw.net]
- 上手ですねと言われる可能性が0なので大丈夫です
- 823 名前:デフォルトの名無しさん [2019/04/22(月) 20:21:53.32 ID:GQt1LKrG.net]
- sed
置換 1に挟まれたN個以下の0または-で構成された文字列を、同数の1で置き換える 10001→11111 100-1→11111 1---1→11111 10-0-0001→111111111 置換対象と同数の文字列で置換するというところをどう正規表現で表すかわからず、、、 よろしくお願いします
- 824 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 05:37:05.12 ID:TbAsj7lM.net]
- 正規表現で数を数えるのは無理
マッチさせて自力で文字を数えるコード書いて入れ替えて ちなみに\Gが使える正規表現環境なら正規表現単独で可能
- 825 名前:デフォルトの名無しさん [2019/04/23(火) 07:05:11.04 ID:k/th3sVe.net]
- >>803
sed ':r; s/1[0-]\([0-]*1\)/11\1/; tr' 前方に 1 のある 10 を 11 に置換する 置換に成功したら tラベル で :ラベル の位置に戻って繰り返す
- 826 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 08:49:46.57 ID:ef59e0DS.net]
- >>803
たぶんこれだけでは不要なところを置換しそう :a;s/1([^0\-]*)(?:[0\-])(.*)1/1$11$21/g;t a 例題をこなすのは確認
- 827 名前:デフォルトの名無しさん [2019/04/23(火) 10:21:33.54 ID:yIB0exXp.net]
- >>803
100010 とか 1000101 とか があるのか? あった場合はどうすべきか そこは明記しような。 謎だらけの設計書書く奴はIT向いてない。
- 828 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 11:46:04.64 ID:ef59e0DS.net]
- >>807
>>806で> 100010→111110、> 1000101→1111111は確認 というかオレは前後にゴミがつくことは何ら影響がある題とは思わなかった >>803の「1に挟まれたN個以下の0または-で構成された文字列を、同数の1で置き換える」にはその前後について言及ないから「触らない」と判断 後者を1000101→1111101で求めるかという点は気になるところ 最初の1〜1ブロックのみなのか、行中の1〜1最長一致ブロックなのか(すべての1〜1ブロックを個別処理も同一)
- 829 名前:デフォルトの名無しさん [2019/04/23(火) 12:07:17.02 ID:yIB0exXp.net]
- >>808
()で囲うとなってれば入れ子のケースは当然問題になるんだから 入れ子を考慮する必要があるかを明確に定義してないのは駄目な仕様。 10-以外が現れた場合の扱いも明記されていない →現れることはないとみなしている んだから 100010は現れないと想定して書く選択肢もある。 いずれにしろ、不明瞭な仕様を書く奴は無能だし、 勝手に解釈するのも実際の仕事じゃトラブルの元。
- 830 名前:デフォルトの名無しさん mailto:sage [2019/04/23(火) 12:23:27.03 ID:ZY45SR7V.net]
- Ruby なら、
re = /1([^1]+)1/ # 1〜1 で、はさまれた部分 str = "x10-0y0-1x" # $1 は、capture 部分で、0-0y0-。この部分を置換する。 # 結果は、x1 (111y11) 1x p str.sub( re ) { |s| "1" + $1.gsub( /[0-]/, "1" ) + "1" }
|

|