Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/
次スレは>>980宜しく
天ぷら等2以降
探検
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/03/15(水) 02:04:35.47ID:e01p03UP2017/04/28(金) 19:19:48.10ID:VBxbz7un
正規表現を勉強し始めた者です
>>73の正規表現について2つ質問させて下さい
展開すると以下のようになりますよね
^[^+]*$ 「+」が無い行に一致。残りは「+」が在る行
(
「+」に数字が続く場合の0〜3桁とその先頭に0が続くパターン ※Q1
\+
\+0*[0-9]
\+0*[1-9][0-9] [1-9]なのは0*0[0-9]は0*[0-9]に含まれているから
\+[1-9][0-9][0-9] 3桁目で0*とすると0900にマッチしてしまう
4桁で「0900以外」のパターン ※Q2
\+0[1-7][0-9][0-9]
\+08[0-9][0-9]
\+090[1-9]
\+09[1-9][0-9]
\+[1-9][0-9][0-9][0-9]
\+[0-9][0-9][0-9][0-9][0-9]+ 5桁以上
)
([^0-9]|$) 続く文字が数字以外もしくは行末。これが無いと+0900に3桁以下の式でマッチしてしまう
Q1
3桁までの表現に0*としてるのはなぜなのでしょうか?
素人考えには
[0-9]?
[0-9][0-9]
[0-9][0-9][0-9]
で良いのでは?と思うのです。 [0-9]?|[0-9][0-9][0-9]? これでも0〜1桁と2〜3桁になりますよね?
「0*」という書き方の方が処理が速くなったりとか何か理由があるのでしょうか?
>>73の正規表現について2つ質問させて下さい
展開すると以下のようになりますよね
^[^+]*$ 「+」が無い行に一致。残りは「+」が在る行
(
「+」に数字が続く場合の0〜3桁とその先頭に0が続くパターン ※Q1
\+
\+0*[0-9]
\+0*[1-9][0-9] [1-9]なのは0*0[0-9]は0*[0-9]に含まれているから
\+[1-9][0-9][0-9] 3桁目で0*とすると0900にマッチしてしまう
4桁で「0900以外」のパターン ※Q2
\+0[1-7][0-9][0-9]
\+08[0-9][0-9]
\+090[1-9]
\+09[1-9][0-9]
\+[1-9][0-9][0-9][0-9]
\+[0-9][0-9][0-9][0-9][0-9]+ 5桁以上
)
([^0-9]|$) 続く文字が数字以外もしくは行末。これが無いと+0900に3桁以下の式でマッチしてしまう
Q1
3桁までの表現に0*としてるのはなぜなのでしょうか?
素人考えには
[0-9]?
[0-9][0-9]
[0-9][0-9][0-9]
で良いのでは?と思うのです。 [0-9]?|[0-9][0-9][0-9]? これでも0〜1桁と2〜3桁になりますよね?
「0*」という書き方の方が処理が速くなったりとか何か理由があるのでしょうか?
7776
2017/04/28(金) 19:24:12.30ID:VBxbz7un Q2
\+0[1-7][0-9][0-9]
\+08[0-9][0-9]
[1-7]なのは00の場合1〜3桁の式と被るから1からなのだと思うのですが
この2つは合わせて \+0[1-8][0-9][0-9] としてはダメなのでしょうか?
「0900以外」の4桁の数字のパターンは以下のようになるかと思います
[1-9][0-9][0-9][0-9] 0xxx
[0-9][0-8][0-9][0-9] x9xx
[0-9][0-9][1-9][0-9] xx0x
[0-9][0-9][0-9][1-9] xxx0
被っているところを数値に置き換え
[1-9][0-9][0-9][0-9]
0 [0-8][0-9][0-9]
0 9 [1-9][0-9]
0 9 0 [1-9]
一応Q1と合わせ疑問に思ったところを書き換えて>>73さんのサンプルと+0〜+10000と+0000〜+9999をテキストに書き出して
テストしてみたところ問題無さそうなのを確認したのですがそれでも確信が持てず質問させて頂きました
試した式は以下になります
^[^+]*$|\+([0-9]?|[0-9][0-9]|[0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|0[0-8][0-9][0-9]|09[1-9][0-9]|090[1-9]|[0-9][0-9][0-9][0-9][0-9]+)([^0-9]|$)
^[^+]*$|\+((|[0-9][0-9])[0-9]?|([1-9][0-9]|0[0-8])[0-9][0-9]|09([1-9][0-9]|0[1-9])|[0-9][0-9][0-9][0-9][0-9]+)([^0-9]|$)
^[^+]*$|\+(|090[1-9]|((([0-9][0-9]+|(|[1-9]))[0-9]|(|0[0-8]))[0-9]|(|09[1-9]))[0-9])([^0-9]|$)
身近に聞ける人が居ないので自分の解釈が間違っていたり何か見落としているのではないか?と悶々としております
どなたか分かる方が居られましたら2つの疑問点の回答をお願いしたいです
また解釈を間違えている箇所がありましたらそちらも指摘下さい。よろしくお願いします
\+0[1-7][0-9][0-9]
\+08[0-9][0-9]
[1-7]なのは00の場合1〜3桁の式と被るから1からなのだと思うのですが
この2つは合わせて \+0[1-8][0-9][0-9] としてはダメなのでしょうか?
「0900以外」の4桁の数字のパターンは以下のようになるかと思います
[1-9][0-9][0-9][0-9] 0xxx
[0-9][0-8][0-9][0-9] x9xx
[0-9][0-9][1-9][0-9] xx0x
[0-9][0-9][0-9][1-9] xxx0
被っているところを数値に置き換え
[1-9][0-9][0-9][0-9]
0 [0-8][0-9][0-9]
0 9 [1-9][0-9]
0 9 0 [1-9]
一応Q1と合わせ疑問に思ったところを書き換えて>>73さんのサンプルと+0〜+10000と+0000〜+9999をテキストに書き出して
テストしてみたところ問題無さそうなのを確認したのですがそれでも確信が持てず質問させて頂きました
試した式は以下になります
^[^+]*$|\+([0-9]?|[0-9][0-9]|[0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|0[0-8][0-9][0-9]|09[1-9][0-9]|090[1-9]|[0-9][0-9][0-9][0-9][0-9]+)([^0-9]|$)
^[^+]*$|\+((|[0-9][0-9])[0-9]?|([1-9][0-9]|0[0-8])[0-9][0-9]|09([1-9][0-9]|0[1-9])|[0-9][0-9][0-9][0-9][0-9]+)([^0-9]|$)
^[^+]*$|\+(|090[1-9]|((([0-9][0-9]+|(|[1-9]))[0-9]|(|0[0-8]))[0-9]|(|09[1-9]))[0-9])([^0-9]|$)
身近に聞ける人が居ないので自分の解釈が間違っていたり何か見落としているのではないか?と悶々としております
どなたか分かる方が居られましたら2つの疑問点の回答をお願いしたいです
また解釈を間違えている箇所がありましたらそちらも指摘下さい。よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★6 [BFU★]
- 中国側が首相答弁の撤回要求、日本側拒否★3 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★2 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★6 [ぐれ★]
- 被爆者は「怒りが腹の底から湧いてくる」高市首相“非核三原則見直し報道”に被爆地で懸念や憤りの声《長崎》 [1ゲットロボ★]
- 【芸能】女優・希良梨さん「ただいま危篤中でございます」インスタに投稿 安否気遣う声多数寄せられる 1月にがん転移とステージ3を告白 [冬月記者★]
- 【悲報】ジャップメディア「高市早苗の発言があってもインバウンドは過去最高を更新しているんだが?」 [616817505]
- 【悲報】小野田紀美「何か気に入らないことがあったら威圧する国に依存するのはリスク」脱アメリカ宣言か [769931615]
- 【高市自民】デイリースポーツのタイトル いくらなんでも長すぎてネット荒れる「スペース収まらない」「今日もヤフコメ1位」 [452836546]
- 「農家は貧しくない」農家の所得は2000万円😱関税や減反で手厚く守られてきた農家の実態 [993451824]
- 【悲報】三越伊勢丹「おーい、インバウンドが居なくなったらお前ら代わりに店来いよ」ネトウヨ「そんな金あるわけねーだろ、ボケ!」 [616817505]
- ホテル業界、高市のせいで中国から大量キャンセル 「大変厳しい状態。一刻も早い収束を願います」 [271912485]
