正規表現道場 Part2

このエントリーをはてなブックマークに追加
1nobodyさん
【正規表現道場の掟】

・言語不問

・質問も大歓迎。使用言語を書くのを忘れずに。

正規表現と関係ない話・質問は他スレへどうぞ。

前スレ
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/
2nobodyさん:2012/09/20(木) 03:58:43.36 ID:???
>>1

●過去スレ
正規表現道場@2ch
 http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc5.2ch.net/test/read.cgi/php/1038146241/
正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g
 http://pc5.2ch.net/test/read.cgi/php/1069245758/
正規表現道場@2ch Part4
 http://pc8.2ch.net/test/read.cgi/php/1105930285/


●過去スレのテンプレにあった参考サイトたち
Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門
 http://web.archive.org/web/20021219021503/http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座)
 http://www.sixnine.net/regexp/

ほとんどは↓のリンク集にまとまっています。
正規表現/文字コード最新リンク2005
 http://www2.famille.ne.jp/~akio1998/l_grep.html (Not Found)
3nobodyさん:2012/09/22(土) 03:58:02.23 ID:???

                        |:::ハ:.:.:.:.:.:i:.:.:i.:.:i./.:.://メノ  左ォ}::::ノ::ノノ
                    |::::i:::';::::::::l、::i:::ハ:/,ィチ爪'    {ヒチ'!::イイ
                      |ハ::::::ヾ::::ハ 'Vリ ゙´ {、込ソ    ゛″!:::i:.:l
                        |:.::ト、:.:.:ヾ:.ハーi|   ::::::::      〉 ノ::::i::.|
                    {:.:.ト、ヾ.:.:.:ヾハ lト、        _, , イ:.:.:.:i.:ハ
                     ヾ::ヽゞ、\.::.\!! ヽ、.   ´ /!.::!.:.i:.:!:.!:l    >>1乙ぱい
                 , '" ヾ\ \:::::::::k   /` ー ' `メ'リ:.:.ノ.ノ:ノノ
                     /     川   リllVハ. (  i `\ ,イイ// //
                /              |l ̄`ヽ  ノ    `メ、
               ,/            {:}          `ー'- ニ_
             ,/         _∠     |l     \ ,      \
        /        _ ,. イ´:       |l      \      ,λ
       /   -‐‐‐-<´   .!   /    |l       ' ,   _,ィ'ンy}
        〈            \  .ノ`ー斗rェ,,_,_,_|l          ,.ir'彡イy-´ !
        `ヽ、        ` ' <._ {jt=t-t-ミ`^Yーrヘr-彡'水k} !:} .ノ
            ` ー-  .._       ` -ヽ.  l`亠^{:i ̄ {:リ |ハ ノノ/ノ
        _,. -‐ '  ̄ ´ ̄` ー- 、    \{{   {:l   {:i ノ_,ィニ_ン´
      //                  `ヽ 、\ \  {:l  {∠ニァ--'
     / /                 `ヽミニ>ァ┴ '´
   /\V|                          /
  ./   ヾ.、                  ,. ' ´
4nobodyさん:2012/10/15(月) 10:43:51.98 ID:???
>>2
正規表現最新リンク集2005
http://web.archive.org/web/20100410230942/http://www2.famille.ne.jp/~akio1998/l_grep.html

個人名載ってるしこのまま外しちゃってもいいかもしれない
5nobodyさん:2012/10/19(金) 12:38:26.99 ID:ZQDqri43
過疎スレ状態になっているっぽいですが質問宜しいでしょうか?
6nobodyさん:2012/10/19(金) 12:44:45.04 ID:???
>>1
7nobodyさん:2012/10/19(金) 19:53:20.37 ID:???
質問は?
8nobodyさん:2012/10/30(火) 16:10:01.92 ID:???
>>5の人とは別人ですが質問がありますのでお願いします

拒否したいワード例
・ばか
・ばっかやろー
・ばーか

掲示板の拒否ワード機能を使って上のような言葉を
 ^(ばか|ばっか|ばーか)
このようにまとめているのですが、
もっと効率よくまとめられるような気がしています

 ^ば(0または任意の1文字)か
以上のように、
まとめることは可能でしょうか?
9nobodyさん:2012/10/30(火) 17:54:51.44 ID:???
ば.?か

ばいか(売価)とかも入るけどねー
10nobodyさん:2012/10/30(火) 21:28:35.04 ID:???
〜ばかり
ばっかり
ばんから
11nobodyさん:2012/10/31(水) 08:02:36.23 ID:???
ばんかい
バイカム

こういうのは>>8の指定の方が間違いがないね
128:2012/10/31(水) 12:31:50.64 ID:???
まさに、>>9のようにまとめるられる書式を知りたかったのです!が…
皆さんご指摘のことを読むと確かにおっしゃるとおりですよねー

ば.?か、のような書式で運用できるかできないか、
掲示板のログとにらめっこしてみることにします

ともあれ、お答えくださった皆さん、とても参考になり助かりました
ありがとうございました
13nobodyさん:2013/01/29(火) 08:17:24.91 ID:???
せめて同じ文字はまとめるか
^(ば(か|っか|ーか))
14nobodyさん:2013/02/10(日) 11:51:32.02 ID:m9q+FHWZ
パスワードの登録で
半角アルファベットと半角数字の組み合わせで8文字以上
という条件を考えてるんですが、以下じゃダメですよね?

preg_match('/^[a-zA-z0-9]{8,}$/', $s);

アルファベットと数字の組み合わせ(アルファベットも数字もどちらもある)とするには
どうしたら良いでしょうか?
15nobodyさん:2013/02/10(日) 12:46:13.25 ID:???
>>14みたいな正規表現のちょっとしたテクニック集とかどっかにまとまってないかね?
16nobodyさん:2013/02/13(水) 23:30:20.10 ID:???
/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/

数字英字 もしくは 英字数字という並びが存在する英数字8文字以上
17nobodyさん:2013/02/14(木) 00:13:02.40 ID:???
>>16を1回チェックするのと、
>>14と「英字を含む」「数字を含む」の計3回チェックするのとで、どのくらい

ここまで書いたところで自分でいろいろ試してみた。
$s = '3066058kczgr9784685fwn874fos847fos8djtkcrzu9q58nzfc';
for($i=0; $i<1000000 && preg_match('/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/', $s); $i++){} //2.3948659897 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && preg_match('/[a-zA-z]/', $s) && preg_match('/[0-9]/', $s); $i++){} //5.7406949997 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && !preg_match('/^[0-9]+$/', $s); $i++){} //3.9960801601 sec.
for($i=0; $i<1000000 && 8<=strlen($s) && ctype_alnum($s) && !ctype_digit($s); $i++){} //2.2285568714 sec.
$s = '1';
for($i=0; $i<1000000 && preg_match('/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/', $s); $i++){} //0.0000748634 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && preg_match('/[a-zA-z]/', $s) && preg_match('/[0-9]/', $s); $i++){} //0.0000240803 sec.
for($i=0; $i<1000000 && preg_match('/^[a-zA-z0-9]{8,}$/', $s) && !preg_match('/^[0-9]+$/', $s); $i++){} //0.0000209808 sec.
for($i=0; $i<1000000 && 8<=strlen($s) && ctype_alnum($s) && !ctype_digit($s); $i++){} //0.0000181198 sec.

おもしろかった。
18nobodyさん:2013/03/04(月) 01:35:07.40 ID:???
>>13
これはひどい
19nobodyさん:2013/03/09(土) 22:12:30.87 ID:???
^([a-z]|[A-Z]|[0-9]){8,}$

はダメ?
20nobodyさん:2013/03/09(土) 23:24:50.86 ID:???
ダメ
21nobodyさん:2013/03/10(日) 23:50:57.56 ID:???
>>19
大文字と小文字を区別したいってことなら

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]{8,}$

でおk
22nobodyさん:2013/03/18(月) 20:02:10.97 ID:XSCUuGgi
すっごい初歩的だったらすまそ
http://www.rider-n.sakura.ne.jp/regexp/regexp.php
で試す限りはうまくいくんだけどPHP上でうまくいかない。

スクリプト SJIS
マッチング文字列 SJIS
PHP内部文字エンコ SJIS
の環境下で

【サッカー】xxxxx【野球】

で最初のサッカーだけをマッチングしたいので
/^【([^】])】/i
としているんだけど、サッカーの時はマッチしない。
【テニス】xxxxx【卓球】ならちゃんとテニスがマッチする。

なんで?(´・ω・`)
23nobodyさん:2013/03/18(月) 20:21:31.67 ID:???
>>22
それだとテニスもマッチしないはずだが
[^】] は「 】」以外の1文字ってことになる
それとShift_JISなんて捨ててUTF-8使おうぜ
24nobodyさん:2013/03/18(月) 22:12:52.90 ID:XSCUuGgi
>>23
すません、[^】]+です。
SJISで何とか…
25nobodyさん:2013/03/19(火) 00:22:00.75 ID:???
mb_regex_encoding("sjis");
mb_ereg ("^【([^】]+)】" ,$txt,$ret);

pregはSJIS使えません
26nobodyさん:2013/03/24(日) 00:53:34.57 ID:???
>>22
文字列をアスキーコードに変換してから検索しろ
27nobodyさん:2013/05/16(木) 11:13:37.06 ID:???
javascriptでの正規表現で質問があります。

/^(?:(?:http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)*$/

上記はURLをチェックする簡単な正規表現だと思うのですが
そのURLがRSSかどうかチェックする正規表現にしたいのです

RSSの拡張子は .rss .rdf .xml です。

URLの最後の拡張子にこの文字列が入ってるかチェック出来るようにしたいのですが
どうすればいいでしょうか?

お願いします。
28nobodyさん:2013/05/16(木) 11:28:59.91 ID:???
最後をこれに差し替え
\.(rss|rdf|xml)$/
29nobodyさん:2013/05/16(木) 11:38:31.44 ID:???
>>28
レスありがとうございます
ただこれに差し替えるだけだと

http://www.example.com/.rss

これも正常として判断されてしまうのですがどうしたら良いでしょうか?

よろしくお願いします。
30nobodyさん:2013/05/16(木) 11:47:36.80 ID:???
[^\\/:,;*?"<>|]\.(rss|rdf|xml)$
31nobodyさん:2013/05/17(金) 09:33:25.55 ID:???
>>30
お礼遅くなってすいません
ありがとうございます!
うまくいきました!
32nobodyさん:2013/07/20(土) NY:AN:NY.AN ID:75R8ikZF
PHPのpregでの正規表現について質問です。

<a href="http://www.test.jp/" title="test"><img src="test.png" alt="ALT" title="TITLE" /></a>

上記のようなHTMLを正規表現でヒットさせ、

<li>TITLE</li>

に変換させたいのですが、正規表現ではどう表したらいいのでしょうか?
33nobodyさん:2013/07/21(日) NY:AN:NY.AN ID:???
保守
34nobodyさん:2013/07/25(木) NY:AN:NY.AN ID:2TH+2Iiw
正規表現で解決できるのではと思い、こちらで質問させてください。

"ver.2 test.Test"という文字列を"ver.2 test. Test"のように
ピリオドの次の文字が大文字のときに限り半角スペースを挿入したいのですが
良い方法はないでしょうか?
3534:2013/07/25(木) NY:AN:NY.AN ID:???
>>34です。
正規表現のグループ化を用いることで解決できました。
安易に質問を投稿してしまい申し訳ございませんでした。
36nobodyさん:2013/07/25(木) NY:AN:NY.AN ID:???
せっかくなのでその正規表現を書いておきますねくらいの気持ちが必要だ。
37nobodyさん:2013/07/25(木) NY:AN:NY.AN ID:???
>>34
preg_replace('/\.(?=[A-Z])/','. ',$str);
38nobodyさん:2013/09/06(金) 20:12:17.12 ID:???
>>32
見ての通り超手抜きだけど例の通りか属性値のダブルクォートが無いぐらいならこれで大丈夫

検索文字列: /^(.+<img.+title=\")(.+)(\" \/><\/a>)$/
置換文字列: <li>$2</li>
http://regex101.com/r/qI6aG4


> PHPのpregでの正規表現

実はPHP分からないんだけど↓みたいな感じ?w

preg_replace("/^(.+<img.+title=\")(.+)(\" \/><\/a>)$/i", "<li>$2</li>", $input_lines);
39nobodyさん:2013/09/14(土) 18:05:14.35 ID:0qKO1mtd
質問です。
PHP5で
preg_match ("/.*'.*/s", $_POST["value"])
としたときにvalueに「'」があってもマッチしない場合があるらしいのですがどういう文字列の場合でしょうか?
preg_matchはPCRE関数でPerl互換です。マルチバイトに対応していないのでその辺りに落し穴があるのかなと思うのですが。
40nobodyさん:2013/09/14(土) 19:42:16.21 ID:QgtFjJm6
FireFoxでRSSリーダにFeedlyを使っています。
NGワードフィルターが正規表現なのですが教えて頂けないでしょうか。
"韓国"というキーワードをフィルタリングしたいです。

http://userscripts.org/scripts/show/172085
41nobodyさん:2013/09/15(日) 10:40:22.03 ID:???
>>39
マッチしない場合があるとは思えないけど、一応マッチしない場合があると言った人に聞いてみれば?
まぁ、$_POST["value"]が送信されて来なければ話は別だけど・・

ちなみにそれは preg_match("/'/", $_POST["value"]) のようにシンプルに書くこともできる
42nobodyさん:2013/09/15(日) 10:43:39.46 ID:???
>>40
使ったこと無いけど、"韓国"だったら完全一致なのでそのまま正規表現使わずに書けると思うけど
43nobodyさん:2013/09/15(日) 15:21:48.42 ID:???
2ch専ブラにおける2chmateのデバッグ用文字列のみの書き込みをNGにしたいです

2chMate 0.8.5.6 dev/HTC/HTL21/4.1.1
2chMate 0.8.5.4/SHARP/SBM003SH/2.3.4

↑こんなやつです

一応専ブラはjanestyleということでどなたか教えていただけませんでしょうか
44nobodyさん:2013/09/16(月) 04:52:23.59 ID:V1KLg8Lz
韓|トンスル|ニダ|
4539:2013/09/16(月) 18:13:41.90 ID:???
>>41
マッチしない場合は無いようでした。
phpの設定の問題でpreg_matchがマッチできずfalseを返す場合があるらしいです。
46nobodyさん:2013/09/19(木) 16:03:12.92 ID:XGTpu0pg
最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが

最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが

最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが

↑こんな感じです
改行を挟まない場合もあります

Janeでこれをあぼーんしたいんですが
同じ文字列が数行続いたかを調べられる正規表現はありませんか
47nobodyさん:2013/09/19(木) 19:40:04.05 ID:???
4846:2013/09/19(木) 23:50:13.04 ID:???
>>47
ありがとうございます
無事あぼーん出来ました
直前の自分のレスも消えてます
49nobodyさん:2013/09/22(日) 00:52:59.03 ID:PBzP1rLU
下の文字列から最短で「NN are_VBP strongly_RB supported_VBN」を抜き出すのに
NN\s.*?VBNでうまくいかない(最長マッチが返ってくる)のですが、何が悪いのでしょうか?

In_IN Israel_NNP ,_, freedom_NN of_IN opinion_NN and_CC risk_NN taking_NN are_VBP strongly_RB supported_VBN ._.
50nobodyさん:2013/09/22(日) 02:25:21.73 ID:V8cai0+K
それだと最初に出現するNN\s位置からマッチングが始まって、
最短で後続するVBNまでがマッチする

こうじゃないか?
.*(NN\s.*?VBN)
5149:2013/09/22(日) 08:30:46.88 ID:???
>>50
ありがとうございます。
しかし、、、.*(NN\s.*?VBN) だと、今度は、行全体がマッチしてしまいます。。。
ムムム
52nobodyさん:2013/09/22(日) 14:36:58.31 ID:???
NN arからじゃ駄目なん?
NNじゃ>>50の言うとおり最初のNNからマッチするんだし
5349:2013/09/22(日) 15:17:49.08 ID:???
>>50
>>52
ありがとうござしました。
プログラム板でも聞いてみたところ、下のような表現を教えてもらいました。
NN\s((?!NN).)*?VBN
54nobodyさん:2013/09/22(日) 20:33:23.35 ID:???
>>53
結果教えてくれてありがと
前方参照否定位置指定子かー

NNが来ないNN空白〜VBNにマッチするのね
55nobodyさん:2013/09/23(月) 15:50:05.13 ID:???
ええい、お前はもう下がっておれ
webprog板の面汚しめ
56nobodyさん:2013/09/23(月) 21:29:41.29 ID:???
php使いが鼻で笑われる所以(´・ω・`)
57nobodyさん:2013/09/23(月) 21:37:40.88 ID:???
(´・ω・`)←この顔文字、3年ぶりぐらいに見たw
58nobodyさん:2013/09/25(水) 21:08:33.09 ID:???
>>57
女友達いないの?
59nobodyさん:2013/10/07(月) 05:09:32.74 ID:???
PHP5.4です。
'hoge山田
太郎2様hoge'
(2の数字は色々変わります)
の中から'太郎2様'をマッチさせたいのですが
/山田[\s\S]*?(/太郎.*?様/u)様/u
でうまくいかないです。どなたか教えて下さいまし。。。
60nobodyさん:2013/10/07(月) 15:52:08.10 ID:???
太郎\d+様
61nobodyさん:2013/10/07(月) 16:36:42.52 ID:???
>>60
なんとー
ありがとうございます
62nobodyさん:2013/10/09(水) 23:36:54.74 ID:???
行の最後に[a-z0-9]が9文字、はどう指定するんでしょうか
([a-z0-9]){9}$
$(([a-z0-9]){9})
と思ったのですが、うまくいかないです。
63nobodyさん:2013/10/10(木) 10:38:47.00 ID:???
[a-z0-9]{9}$
64nobodyさん:2013/10/10(木) 11:09:37.77 ID:???
ありがとうございます!
65nobodyさん:2013/10/31(木) 18:34:38.76 ID:GYE7WPbH
ab(cd)efg
とある時
(.*?)
で"(cd)"は返ってきますが、
"cd" とカッコの中身だけを取りたい時はどうすればいいでしょうか
"(" と ")" を置換するしかないですか?
66nobodyさん:2013/10/31(木) 18:49:48.33 ID:???
言語、、つか環境は?
67nobodyさん:2013/10/31(木) 21:18:35.06 ID:odoD21Ul
エスケープしろよ
68nobodyさん:2013/11/29(金) 11:12:23.82 ID:???
PHP5で
パターンは、/<a>.*<\/a>/
対象文字列は、<a>テスト1</a><a>テスト2</a>
preg_match('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)

でマッチした文字列は、
$result[0]:<a>テスト1</a>
$result[1]:<a>テスト2</a>
となることを期待しているのですが、

実際は、
$result[0]:<a>テスト1</a><a>テスト2</a>
となりました。

<a></a>は独自タグで間に入る文字列長、フォーマットは不定です。
どうすれば期待通りの振る舞いに出来るでしょうか?
69nobodyさん:2013/11/29(金) 11:36:29.05 ID:???
68です。

すみません。訂正します。

× preg_match('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)
○ preg_match_all('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)
70nobodyさん:2013/11/30(土) 00:49:11.30 ID:ykQSlGiP
?
71nobodyさん:2013/11/30(土) 23:20:57.87 ID:???
正規表現の練習になるお題ください
72nobodyさん:2013/12/04(水) 06:52:39.64 ID:???
>>71
お題が欲しけりゃJaneのReplaceStr.txtとかNGEx.txtとか自分でいじってみればいいんじゃないの?
練習はReplaceStr Toolでやれるから。
グループ化を使って解析させると幾分わかりやすくなる。
73nobodyさん:2013/12/08(日) 20:14:52.93 ID:1LHzvpJQ
おしえてください。

テーブルタグで囲っている、下記のような
HTMLの表があります。


名前 | ふなっしー
住所 |  東京都港区赤坂
電話番号 | 090-0000-0000


ふなっしー
東京都港区赤坂
090-0000-0000

という結果を期待して

名前(.*)
住所(.*)
電話番号(.*)


と書いたんですが、使い方を間違っているのか?
うまくいきません。
他の記述方法はないでしょうか?
74nobodyさん:2013/12/20(金) 03:59:14.24 ID:JjVtc12l
ム板の本スレが新しくなったため報告させていただきます。

■本スレ
Regular Expression(正規表現) Part12
http://toro.2ch.net/test/read.cgi/tech/1387257592/

■注意
工作員がわざと重複させて立てた偽スレを本スレだと偽って宣伝に来る可能性があります。
本スレは上記のみですので十分ご注意ください。
75nobodyさん:2013/12/22(日) 03:59:29.94 ID:???
>>72
ReplaceStr Toolって?ググったが出てこない
76nobodyさん:2013/12/22(日) 08:24:16.49 ID:???
77nobodyさん:2014/01/12(日) 01:41:51.67 ID:???
質問は>>74のスレにどうぞ。

保守。・・のついでに私的メモを書いていくかも。

檜山正幸のキマイラ飼育記
http://d.hatena.ne.jp/m-hiyama/20100603/1275546996
78nobodyさん:2014/01/13(月) 23:30:11.42 ID:???
IT PRO - 形式言語とオートマトンを学ぶ (3/4)
http://itpro.nikkeibp.co.jp/article/lecture/20061127/254890/?ST=selfup&P=3
79nobodyさん:2014/01/15(水) 23:08:02.57 ID:???
質問は>>74のスレにどうぞ。

http://www1.adachi.ne.jp/katz/primer/automata.html
会社の新人研修でオートマトンの講義を担当した。
80nobodyさん:2014/01/16(木) 03:06:09.07 ID:???
計算機数学 町田 元
http://www.amazon.co.jp/dp/4627821506

大阪大学 - コンピュータ数学
https://koan.osaka-u.ac.jp/syllabus_ex/campus?view=view.syllabus.ex.refer.sogo.search
&func=function.syllabus.ex.refer&nendo=2009&j_s_cd=09&j_cd=090508&langkbn=j

※ 全部正規表現に関係するリンクなんで荒らしではないです。
正規表現に関わるオートマトンの知識を付けたい方には参考になると思います。
81nobodyさん:2014/01/18(土) 22:50:11.07 ID:???
有限オートマトンと正規表現 (ヤギ 野菜 狼)
ttp://www.i.kyushu-u.ac.jp/~takeda/Lectures/.../ComputationTheory01.pdf?
82nobodyさん:2014/01/19(日) 07:18:17.70 ID:???
ある文字列を含まないものにマッチする正規表現
(?:(?!foo).)*

^(?:(?!foo).)*o$ → 「foo」 にマッチ出来ない。

先読みを使わない正規表現ならマッチ出来る。
→ (?:(?!foo).)* は厳密には間違い。

Q、では先読みを使って正しく動作させるにはどう書くべきか?
83nobodyさん:2014/01/19(日) 11:23:45.74 ID:???
お望みの先読み使って書くなら /fo(?!o)/

だろうが、

こんなの使うくらいなら

if (/foo/) {

} else {
  ※ここに書いたほうがいいに決まってる
}

で、もはや正規表現使うコストももったいないくらいだから
普通は strpos()みたいな関数使うべきだろう。
84nobodyさん:2014/01/19(日) 15:12:27.67 ID:U6WWS19r
先頭一致とか後方一致はsubstr使ってる
iオプション必要なら代わりにlc
85nobodyさん:2014/01/19(日) 15:26:00.19 ID:???
c
86nobodyさん:2014/01/19(日) 17:13:11.44 ID:???
>>83
>>82の内容を理解出来てないね・・

(?:(?!foo).)* → fo にマッチ
o$ → o にマッチ

これ足して foo にマッチ「する」のが期待する文字列否定の動作。
fo の中に foo は含まれていないので fo にはマッチしなければならない。

>関数使うべき
マラソン選手に車使うべきって言ってるようなもん。
87nobodyさん:2014/01/21(火) 04:23:32.47 ID:???
正解はこちら↓

Perl正規表現雑技 - ある文字列を含まないものにマッチする正規表現
http://www.din.or.jp/~ohzaki/regex.htm#Without
88nobodyさん:2014/01/24(金) 01:21:47.01 ID:???
うーむ、オートマトンの勉強というか、まだ触りしか学んでないんだが
既に文字列否定の正規表現を簡単に作れるようになってしまった。

チャリの運転と同じで、一旦出来るようになるとなんてことないね。
89nobodyさん:2014/01/24(金) 05:08:57.49 ID:???
(次のお題)

abc かつ def を含まない文字列を表す正規表現を作れ。ただし先読みはNG。
90nobodyさん:2014/01/25(土) 14:00:24.10 ID:peRg4Ln+
お題が提示されておりますが、質問よろしいでしょうか。
言語は Java(Android開発) です。

やりたいことは、
 ・'a', 'b', 'c', '*' の4つの文字が使われた文字列を分割する
 ・'a*', 'b*', 'c*' は1文字として扱い、'*'のみの物は無い
になります。

例えば "aba*cb*" の場合は
a
b
a*
c
b*
に分割したいです。

どのように書けば良いのでしょうか、ご教授願います。
91nobodyさん:2014/01/25(土) 17:37:15.39 ID:VUYYCfMh
([abc]\*?)
92nobodyさん:2014/01/26(日) 00:17:59.26 ID:???
このスレは道場と名の付いてる通り正規表現のスキルアップを目指すスレです。

糞質問・キチガイは↓こちらにお願いします。

Regular Expression(正規表現) Part12
http://toro.2ch.net/test/read.cgi/tech/1387257592/
9390:2014/01/26(日) 13:40:59.38 ID:???
>>91
ありがとうございました。勉強になります。

>>92
>>1も読めない糞は2chには向いていないと思うよ。
もう何十年も居座っていると予想されるが、そろそろ自覚しなよ。
94nobodyさん:2014/01/26(日) 23:09:13.31 ID:???
ここはもう荒らしの本拠地になってるから仕方がないよ。
わざわざ煽りにム板まで出張してきてるし。
95nobodyさん:2014/01/27(月) 00:48:44.89 ID:???
こちらは精神異常者の隔離スレとなっております
96nobodyさん:2014/01/27(月) 05:05:55.59 ID:???
じゅんじゅんのきまぐれ
http://d.hatena.ne.jp/junjun777/20110927/regexp_not_include

おや、あわわさんとやらが俺の代わりに知らせに行ってくれてたのか。
あわわさん乙。ありがとう。

正規表現 Part11
http://toro.2ch.net/test/read.cgi/tech/1363769640/337

ってあれ?あわわさんのほうが6時間早い。CPU時計の時差?
97nobodyさん:2014/01/29(水) 03:59:46.05 ID:???
レベル高いスレにただいま。
98nobodyさん:2014/01/29(水) 04:05:21.14 ID:???
荒らしの住み処
ただのクソスレ
99nobodyさん:2014/01/29(水) 05:11:24.62 ID:???
ところで向こうの267は雑技たんなのかな?266、雑技のネタに使ってもよかですたい。
100nobodyさん:2014/01/29(水) 08:45:10.20 ID:???
>>99
当たりw
266の書き方は考えたけど,今回のケースでは267の書き方で大丈夫と考えた.
そういや質問者は「1」を含まないって書いてあるのに,なぜ「123」? とは思ったなw

後ろに他の正規表現を続けたりするとバックトラックして,
271の通りの可能性があるから初心者には266の方がいいのは確か.

ただ,他にもいろいろ考え出すと,最も内側のものだけ削除したいのなら,
ABC(?:(?!123|ABC|DEF).)*DEF
と書いた方がいいとかもある.

ちなみに266のミソは↓の辺りで微妙に使っていたりする.
http://www.din.or.jp/~ohzaki/regex.htm#NoEndTag
101nobodyさん:2014/01/29(水) 15:23:04.24 ID:???
>>100
ああ、考えてみればABCも入れたほうがいいね。質問者の対象データが対になってる
データだったから必要性を感じなかったが入れるべきだった、さすが雑技たん。

>なぜ「123」?
1というのは実データとは違う省略形と考えた。
初心者には文字と文字列の違いが分からないから文字列のつもりで1と書いてしまった
可能性がある。そこで文字列に対応しておけば1文字にも対応出来るってわけ。

>ABC(?:(?!123|ABC|DEF).)*DEF
これが基本形やね。高速化するなら*+とか、もっとやるなら[^1AD]*+使ってごちゃごちゃ書いたり。

>NoEnd
ミソは否定の中に分岐を入れることだからそれとはちょっと違うw
それと <\2> だと <font> になってしまうで・・ <\2\b やね。
102nobodyさん:2014/01/30(木) 00:29:41.02 ID:???
>>101
>1というのは実データとは違う省略形と考えた。
なるほど.確かに,初心者ほど状況説明が下手だからね.

>それと <\2> だと <font> になってしまうで・・ <\2\b やね。
単純なミスだな.指摘ありがとう.
103nobodyさん:2014/01/30(木) 07:11:02.94 ID:???
・範囲内で文字列を含まない正規表現

$_ = "zzzABC XYDEFzzDEFz";
if ( m/
# Perl 5.10 以降で有効
ABC
[^XAD]*
(?:
(?!XYZ|ABC|DEF).
[^XAD]*
)*
(*PRUNE) # バックトラックステートの削除
(*SKIP) # 次回の走査開始位置をここに飛ばす
(?:XY?)? # XYZとDEFの競合を想定した取りこぼし回収
DEF
/xgsiaap )
{ print "match! <".${^MATCH}.">"; }
else
{ print "no match."; }

>>102
修正乙!
104nobodyさん:2014/01/30(木) 13:46:05.59 ID:???
修正乙の後でアレなんだけど、実際に動かしてみたらだいぶおかしいから手直ししてみたよ、と。

while ($html =~ /
<(NOBR|CODE|B|PRE|FONT)\b

(?=
(
(?:(?!<\/\1>).)*?
(?:<\1\b|$)
)
)
/sixg

) {
print "<".$1.$2, "\n";
}

------------- perl.htm -------------
<b><font><pre><b>aaa
------------- perl.htm -------------

*? はなるべく使いたくないなぁ・・ [^<]*+ を使って最適化したいw
105nobodyさん:2014/01/31(金) 02:30:50.66 ID:???
>>103
(*VERB:ARG) ってのは知らなかったなぁ.
今回のケースだと(*PRUNE)は(?>pattern)で置き換えができると思うが,
マニュアルの 「(*PRUNE) は (?>pattern) 単独では表現できないケースを扱うために使えます。」ってのがどういうケースなのか想像できん.

>>104
修正ありがと.
元のやつだと後ろを吸い込んじゃうからマッチ位置が先に進んでしまう.
そうならないように先読みを使うと,先読み部分は後方参照に含まれなくなるから,先読みの中で改めて補足が必要って感じだね.
106nobodyさん:2014/01/31(金) 04:37:54.39 ID:???
>>105
>単独では
・・・ ( ・・・ (*PRUNE) )
みたいに ( ) で分断されてる場合とか? (?> だと2つ以上必要になる。

>マッチが先に
当たり〜。printのとこは""の中にまとめて書いても大丈夫だったのか、勉強になりますた。
改めて修正乙。
107nobodyさん:2014/01/31(金) 10:29:26.11 ID:???
>>103
「XYZとDEFの競合」ってのはXYZの後半部分がDEFの前半部分と同じ場合ってことかな?
例えば,xydとdef,とか,xdeとdefみたいな

もしそういう,後半部分と前半部分が重なる場合を考え出すと,話がもう少しややこしくなる.

つまり,ABCDとCDEFがキーだったときに,ABCDEFという文字があったら,
それはABCD+EFと解釈するのか,AB+CDEFと解釈するのか,という問題.

その解釈がすべて前方優先なのか,すべて後方優先なのか,それともキーの相互の優先度で決まるのか,
あるいは,あらゆる可能性を許すのか,あらゆる可能性を許さないのか.

キー自身が重なる場合もある.
例えば,ABCABみたいなキーだったとき,ABCABCABは,ABCAB+CABなのか,ABC+ABCABなのか.
108nobodyさん:2014/01/31(金) 10:34:35.37 ID:???
>>106
>・・・ ( ・・・ (*PRUNE) )
なるほど,括弧の深いところで使うと,(?> で表現するのは大変そうだ.
しかも,もしそれが中間レベルで分岐してたりすると,(?> では表現しきれないかな.
109nobodyさん:2014/01/31(金) 16:13:45.49 ID:???
>>107
ぶっちゃけその辺は何も考えてない。試作品とかテンプレートみたいな感じで作っただけ。
競合対策の部分は普通の使い方をするならいらないね、HTMLやXMLタグで挟まれた文字列にマッチさせるときとか。
こういうの以外に使い道が思い当たらないし。(だったら付けるな)

>>108
>分岐
なるほど、(?> ではお手上げだ。俺も年末に覚えたばかりでよく分かってない。
110nobodyさん:2014/02/01(土) 16:48:52.03 ID:???
## (*COMMIT)

$_ = "12";
if (
m/^1((*COMMIT)3|2)/
){ print "match!\n"; }
# 分岐の中で踏まれると以後ほかの分岐要素を走査することがなくなる。
# 現在の分岐要素がマッチ失敗したら全体もマッチ失敗となり検索はそこで完全終了する。

m/^1(*COMMIT)(3|2)/
# 下位層の分岐は走査され、マッチが成功する。

$_ = "12";
@test = $_ =~ m/^1(*COMMIT)A|\d/g;
print "@test\n";
# /g でも次位置からの走査は行われない。

@test = $_ =~ m/^1(*COMMIT)|\d/g;
# 結果 = 1 2 。マッチが成功した場合は走査を止めることはない。(失敗したときだけ止める)
111nobodyさん:2014/02/01(土) 17:24:27.45 ID:???
Q、(*COMMIT) とは逆にマッチが成功したときだけ /g を止める最も簡単な手段は何か?

$_ = "123";
@test = $_ =~ m/1|2|3/g;
print "@test\n";

↑2 がマッチ成功したときに /g を止め、3がマッチしないようにする。
フラグ変数を用意、チェックすれば可能だがもっと手軽な手段はないか。
112nobodyさん:2014/02/02(日) 07:59:18.35 ID:???
う〜ん、/g はループなのに break する方法が用意されていない。
COMMIT があるのにこれがないのはとても不可解だ。

# 先読みの中の (*SKIP) は機能しない。
@test = $_ =~ m/1|2(?=.*(*SKIP))|3/g;

# while 文の last を使う。
$_ = "123";
while ( m/1|2|3/gp )
{ print "${^MATCH}\n";
last; } # 1 で止まる。

# (?{code}) で last → 効果なし
while ( m/1|2(?{ last; })|3/gp )

# while 文に名前を付けて (?{code}) で last → 効果なし
TEST : while ( m/1|2(?{ last TEST; })|3/gp )

perl陣営に言えば新しいコマンド作ってくれそうだなぁ。
113nobodyさん:2014/02/02(日) 08:47:00.66 ID:???
# (?-g) → 効果なし
while ( m/1|2(?-g)|3/g )

# 苦肉の策 (現実的でない)
while (
m/(1)|(2).*|(3)/g
)
{ print "${^N}\n"; }

# 苦肉の策 + 最後の空文字列にマッチしない対策 (現実的でない)
while (
m/\z(*COMMIT)(*F)|(1)|(2).*|$/g
)
{ print "match! ${^N}\n"; }
114nobodyさん:2014/02/02(日) 10:19:23.61 ID:???
>>111
>>112 >>123
/g がループというのはちょっと違う.
リストコンテキストで評価したときはループと言えるが,スカラーコンテキストで評価したときはループではなく,
単に前回マッチした場所を覚えていて続きからマッチングを行うというだけ.

この問題はリストコンテキストで /g を評価したときに,マッチ成功後に途中で止めるいい方法はないかって言う問題だと解釈した.
スカラーコンテキストで評価したときに止めるんなら last を使えば簡単に止まる話.

つまり,while を使っていいんなら,
while (/1|2(*:STOP)|3/g) {
push(@test, $&);
last if $REGMARK eq 'STOP';
}
print "'@test'\n";

リストコンテキストで評価したときに途中で止めるには,かなり条件が限定されるが,
@test = $_ =~ m/(?(?<=2)\G(*COMMIT)(*FAIL))(?:1|2|3)/g;
ぐらいしか思いつかなかった.
これではフラグを使った方が簡単だろう.
115 ◆QzqhRqBYxktP :2014/02/02(日) 14:00:26.89 ID:???
>>114
>ループというのはちょっと違う
そのへんはちゃんと理解してるから大丈夫。foreachとか<>みたいなつもりで書いてるから。

>リストコンテキストで /g を評価したときに,マッチ成功後に途中で止めるいい方法はないか
その通り。

>(*:STOP)
これはフラグ変数を使うやり方とまったく同じだからボツ・・。{ } の中で last するのはナシ。
m/ / の中で止められないか、という話だから。

しかも$REGMARKと$REGERRORは予期しない動きをすることがあるから
普通にフラグを使ったほうが確実。(後述)

>これではフラグを使った方が簡単だろう
やっぱそうかぁ、雑技たんでもダメなら無理そうだね。考えてくれてありがとう。
116nobodyさん:2014/02/02(日) 14:08:53.79 ID:???
## $REGERROR

# マッチ失敗でも$REGERRORが偽を返す例
$_ = "11";
m/^(*MARK:NAME)12/;
if ($REGERROR){ print "yes\n" }else{ print "no\n"; };

結果 → no

# 2 を (?!) や (*FAIL) に変えると・・?
m/^(*MARK:NAME)1(?!)/;

結果 → yes

2 を $ にすると no のまま。
117nobodyさん:2014/02/02(日) 14:12:45.66 ID:???
あれ、$REGMARK が予期しない動作になるデータはないや。
ごめん、使えないのは $REGERROR だけかも。
118nobodyさん:2014/02/02(日) 14:30:37.56 ID:???
>単に前回マッチした場所を覚えていて続きからマッチングを行うというだけ

あ、ちゃう、これ分かってなかった。場所覚えてるだけだったのか、違和感感じてたんだけど
やっと理解出来たよ、ありがとう。


あと雑技たんのサイトだけど
>回文にマッチする正規表現 # 再帰版

× (??{$palindrome})*
○ (??{$palindrome})?

だね。前者だと回文を繋げた文字列 121454989・・・ みたいなのを拾ってしまう。
119nobodyさん:2014/02/02(日) 20:34:08.85 ID:???
>>117
確かに $REGERROR は期待通りに動かないな.

>>118
回文の間違い指摘ありがとう.
120 ◆QzqhRqBYxktP :2014/02/02(日) 20:50:07.49 ID:???
おや、出来ちゃった・・

# リストコンテキスト + /p のマッチング中に break する。
$_ = "123";

@test = $_ =~ m/
1
|2
(?{ $last = "${^MATCH}"; })
(*COMMIT)(*F)
|3
/xgp;

push(@test,$last);
print "@test\n";

# リストコンテキスト + /p のマッチング中に break する。( push版 )
push(@test,
m/
1
|2
(?{ $last= ${^MATCH}; })
(*COMMIT)(*F)
|3
/xgp
,
$last
);

>>119
仕事はやっ!修正乙〜
121 ◆QzqhRqBYxktP :2014/02/03(月) 07:41:48.62 ID:???
↑× /p のマッチング中に → /g の間違い
----------------------------------------------
# 先読みの中の (*SKIP) は正しく機能する。(× >>112)

$_ = "123";
@test = $_ =~ m/1|2(?=.*\z(*SKIP)(*F))|3/g;
print "@test\n";
# 結果 → 1

# 先読みの中の (*SKIP) が失敗する例もある
@test = $_ =~ m/1|2(?=.*\z(*SKIP))(*F)|3/g;
# 結果 → 1 3
# perl内部の最適化の影響により (?=) より早く (*F) が判定されている?
# $REGERROR が期待通りに動かない原因も最適化が犯人? (最適化は 詳説 正規表現 参照)

----------------------------------------------

# \z で始まる正規表現 + while( /g )
while (
m/\z(?{ print "in code\n"; })/g
)
{ print "match!\n"; }

<結果>
in code
match!
in code

2回走査されてる。2回目は走査しといてマッチ失敗。/g により1つ先に進む動作の副作用?
(?{code}) が2回実行されるのでプログラムが想定外の動作になる可能性。
/g を忘れると走査開始位置が毎回先頭に戻り、無限ループになる。
122nobodyさん:2014/02/03(月) 17:57:59.62 ID:???
# リストコンテキスト + /g のマッチング中に break する。(perl 旧verl対応版)

$_ = "12223";

@test = $_ =~ m/
1
|2
(?{ $last = "$&"; })
.*\z # 余った文字列を全部マッチさせる。
|3
/xgs;

$test[$#test] = $last; # 最後の要素の入れ替え
print "@test\n";

これらを "break出来てる" と言うのはちょっとおこがましいかも知れない。やはり break コマンドが欲しい。
123 ◆QzqhRqBYxktP :2014/02/04(火) 13:37:35.16 ID:???
・$REGERROR を (?{code}) と入れ替えて実験

my $cnt = 0;
$_ = "11";
m/^(?{ $cnt++;})1(*F)/;
print "$cnt\n";
# 結果 → 1

my $cnt = 0;
$_ = "11";
m/^(?{ $cnt++;})12/;
print "$cnt\n";
# 結果 → 0

$REGERROR さんに無罪判決。冤罪でした。
124nobodyさん:2014/02/04(火) 13:39:28.33 ID:???
皆様、こんにちは 質問させてください

テキスト内の文字を置き換えるアプリ(Devas)で作業をしています
正規表現で文字検索と置き換えしたいのですが表現法がわかりませんので
詳しい方アドバイス下さいませんでしょうか?

テキスト内には

.(ドット)abc"IMG
.(ドット)def"IMG
.(ドット)ghr"IMG

など . と "IMG で囲まれた数パターンの文字列がありこれに元文字列を利用し .photo を付け加えたいのです

.(ドット).photo.abc"IMG
.(ドット).photo.def"IMG
.(ドット).photo.ghr"IMG

検索、置き換え 共に正規表現が使えるアプリなのですがそれぞれどう表現して良いのか教えてくださいませんか?
よろしくお願いいたします 
125 ◆QzqhRqBYxktP :2014/02/04(火) 13:41:51.03 ID:???
・開始タグと閉じタグの間に文字列を含まない正規表現 (正規表現 否定 除く)

$_ = "ABC ABC DEF ABCDEF";

while ( m/
# Perl 5.10 以降で有効
ABC
[^ADX]* # 先頭の文字を使った高速処理
(?:
(?:
DEF (*ACCEPT) # マッチ成功
|\K ABC # 今までマッチした文字列を捨ててリスタート
|XYZ (*PRUNE) (*SKIP) (*F) # NGワード検出、マッチ失敗
|. # ↑の3つ以外の1文字
)
[^ADX]*
)*
(*COMMIT) (*F) # DEFで閉じられないまま終端に到達。
/xgsiaap )

{ print "match! <${^MATCH}>\n"; }

# NGワード、開始タグ、閉じタグの競合は想定していない。
# 例、NGワード="</" 、 閉じタグ="</div>"
126nobodyさん:2014/02/04(火) 20:09:35.38 ID:xuvSG1oC
s/^\./.photo./g
行頭限定の場合
127 ◆QzqhRqBYxktP :2014/02/05(水) 16:22:38.43 ID:???
>>124
<検索>
\.([a-z\d]{1,4}"IMG\b)
<置換>
..photo.$1

\. を ( ) に入れてないのは処理効率を上げるため。
「abc」の部分は拡張子と考えて数字も許可した。(1文字以上4文字以下の英数字)

何かまずかったら遠慮なく。
128124:2014/02/06(木) 18:00:16.14 ID:???
たくさんレスいただきましてありがとうございます
お礼が遅れまして申し訳ありません

127様の \.([a-z\d]{1,4}"IMG\b) で無事検索できることができました
しかし置き換えでは マッチした文字列が ..photo.$1 に置き換わるだけで $1にマッチした語句が適応されません

検索結果
○○○○○○.abc" IMG が ○○○○○○..photo.$1 となります
希望では
○○○○○○.photo.abc" IMG となることです(単純に .拡張子 前に .photo を入れたい)

先の書き込みでの訂正がありました 申し訳ありません
検索したい文字列には " と IMG の間に半角スペースがありました

半角があっても上手く検索にひっかっかっていますが
上手く置き換えができないのはこの半角が原因なのでしょうか?

引き続きご指導いただければ幸いです よろしくお願いいたします
129 ◆QzqhRqBYxktP :2014/02/06(木) 20:27:01.21 ID:???
>>128
ごめんなさい、こちらにも見落としがいくつかありました。
( Devasにはメジャーな正規表現エンジンが使われていると考えて作りましたが違ったようです )

・通常版 (上行=検索、下行=置換)
\.[a-zA-Z\d]{1,4}" ?IMG\b
.photo\0

・拡張子を小文字に変換する版 (例 .JPG → .jpg )
\.([a-zA-Z\d]{1,4})(" ?IMG\b)
.photo.\L\1\E\2

・ 「"」 と IMG の間のスペースがあっても無くてもスペース1個にする版
\.([a-zA-Z\d]{1,4})" ?IMG\b
.photo.\L\1\E" IMG

# \L と \E を削除すれば拡張子の小文字変換はしなくなります。
# 本当は .photo.photo.jpg のような複数回置換による重複を防ぎたかったんですが
# この正規表現エンジンでは無理なようです。(>_<)
130nobodyさん:2014/02/06(木) 22:22:42.47 ID:???
>>129
度々のレスありがとうございます

正規表現エンジンにもいろいろなものがあるとは知りませんでした
お手数をおかけいたしまして申し訳ありません

いくつものパターンを示してくださいまして 
重ねて感謝いたします

通常版にて理想の変換ができました
今回教えて頂いたような知識を深めて、もっと便利にPCを使えるようになりたいと思います

勉強になりました ありがとうございます m(_ _)m
131nobodyさん:2014/02/09(日) 02:41:58.21 ID:???
質問させてください。
phpのpreg_match関数でwebページから文字列を抽出したいと考えています。
以下を使用して抽出していますが、改行が含まれると抽出ができませんでした。

$text = '/value="(.*?)" id="latest"/';
preg_match($text, $source, $matches);
$word = $matches[1];

色々調べて$textを以下のようにしてみましたが、うまくいきませんでした。
$text = '/value="(.*?)" id="latest"/s';
$text = '/value="([\s\S]*?)" id="latest"/';
$text = '/value="((\n|.)*?)" id="latest"/';

何故うまくいかないのかよくわかりません。
なにかアイデアはありませんでしょうか?
132nobodyさん:2014/02/09(日) 08:07:39.87 ID:J9pikab5
俺なら
/value="([^"]*)"\s+id="latest"/
133 ◆QzqhRqBYxktP :2014/02/09(日) 17:20:31.79 ID:???
× ' '
○ " "

というオチ?PHPは触らないから分からない。
134nobodyさん:2014/02/09(日) 17:39:19.85 ID:J9pikab5
PHPなんか触らないから分からないけど両端のすらすらが余計とかなんかね
135 ◆QzqhRqBYxktP :2014/02/09(日) 18:09:22.12 ID:???
ごめんなさい、PHPの解説サイト見たら ' ' でOKでした。
136nobodyさん:2014/02/11(火) 10:03:59.12 ID:???
PHPスレで聞いたほうが早いかも。原因が改行以外にある可能性も十分あるので
動かないサンプルコードをアップして見てもらえば確実に原因教えてもらえると思う。
137nobodyさん:2014/02/11(火) 13:41:52.16 ID:???
↑$source に入るHTMLファイルも見ないと原因が分からない可能性アリ。
138 ◆QzqhRqBYxktP :2014/02/13(木) 23:18:13.09 ID:???
再帰と (?( ) yes|no) の組み合わせが楽しすぎる。もしかしたら宝の山かも。
マトリョーシカの中にダルマを入れられる感じ。
139nobodyさん:2014/02/15(土) 18:56:47.98 ID:???
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html#NOTINCLUDED
「調整中」


気付いてもらえたのかそうでないのかいまいち分からんす。
このサイトはあんまアテにしないほうが良さそうだ。
140 ◆QzqhRqBYxktP :2014/02/16(日) 14:59:01.14 ID:???
>>125 の疑問点

\K が分岐の先頭にあることで処理速度に遅れが出るかどうか調べる。
また、\K を使わない書き方とどちらが早いか調べる。
141 ◆QzqhRqBYxktP :2014/02/16(日) 15:40:17.27 ID:???
比較対象追加 ( >>125 ) | (?=ABC) \K ABC
142 ◆QzqhRqBYxktP :2014/02/16(日) 20:56:16.32 ID:???
143 ◆QzqhRqBYxktP :2014/02/17(月) 00:27:24.93 ID:???
Perl6::Overview::Rule
http://search.cpan.org/~lichtkind/Perl6-Doc-0.36/lib/Perl6/Doc/Overview/Rule.pod

[foo|bar]+

Perl6ではこれが正しい書き方になるらしい。初心者がハマりそう・・罠的な意味で。

先読み、戻り読みは書きにくくなった感が否めない。
文字クラスも加算、減算をしないときでも <> で囲う必要があるのはめんどくさい。

が、新しいオモチャとしては十分楽しめそう。ついでに英語も覚えてしまおう。
144 ◆QzqhRqBYxktP :2014/02/22(土) 00:25:15.35 ID:???
S05
http://feather.perl6.nl/syn/S05.html
> Last Modified: 11 Feb 2014, Version: 174

A05
http://search.cpan.org/dist/Perl6-Doc/share/Apocalypse/A05.pod
> Last Modified: 18 May 2006, Number: 5, Version: 7

perl6ではもはや正規表現ではないという意味を込めて 「regex」 と呼んでるらしい。
perl5の正規表現にあった 「ゴチャゴチャ感」 が綺麗に一掃されてる感がある。

:ratchet があるのは最高だなぁ。
145nobodyさん:2014/03/01(土) 19:39:32.33 ID:n8n41uDi
http://anago.2ch.net/test/read.cgi/applism/1393578532/139
http://anago.2ch.net/test/read.cgi/applism/1393578532/157
この書込の方を正規表現でNGにしたいと思っています。

条件は
最初の行とは限らないが、「・」で初める行がある。何文字かの後、改行
その次の行は空の行
この2セットを正規表現で表すにはどうすればいいでしょうか?

.*?・.*?\r\n\r\n
としてみましたがダメでした。
146 ◆QzqhRqBYxktP :2014/03/01(土) 20:13:27.84 ID:???
>>145
2chブラウザ用でいいのかな?処理速度重視で作った。

(?:^|<br>)(?>\s*)・(?>[^<]*(?:(?!<br>).[^<]*)*)<br>(?>\s*)<br>
147nobodyさん:2014/03/01(土) 20:45:21.19 ID:n8n41uDi
>>146
素敵!
神!
すっきりしました!
テキストじゃなくhtmlに対して正規表現だったのですね、勉強になりました。
ありがとうございました!
148nobodyさん:2014/03/02(日) 02:32:48.90 ID:2i/vkXtz
htmlに対してとかじゃなくログに合わせろと
149 ◆QzqhRqBYxktP :2014/03/04(火) 19:52:20.08 ID:???
(>>146)
(?:^|<br>) は分岐のバックトラックが残るから (?><br>|\A) としたほうが良さそう。

この2つは動作が完全なイコールではないので注意が必要、文頭が <br> だった場合に
絶対に \A がマッチ出来なくなるため。これが問題になることはほとんど無いだろうけど。
150nobodyさん:2014/03/05(水) 08:18:57.21 ID:???
(>>144)
S05
ttp://perlcabal.org/syn/S05.html
>Last Modified: 27 Feb 2014

Jeffrey Friedl
ttp://regex.info/

Jeffrey Friedl - 第3版のコード ※ CGIなので直リンは避けたほうが良い。
regex.info/listing.cgi?ed=3&p=all

第2刷に対する正誤表 - 詳説 正規表現 第3版
ttp://www.oreilly.co.jp/books/9784873113593/#errata0

Google Books 詳説 正規表現 ※ 立ち読み可能
ttps://www.google.co.jp/search?tbm=bks&hl=ja&q=%E8%A9%B3%E8%AA%AC%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE
151nobodyさん:2014/03/13(木) 06:24:42.94 ID:???
ascii抜粋

!"#$%&amp;'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
152nobodyさん:2014/03/17(月) 17:00:03.12 ID:???
>>142
>Perl6 正規表現 I

ここのサイト主、先読みを理解出来てないな・・。beforeとafterも逆だし。
153nobodyさん:2014/03/21(金) 12:20:24.42 ID:???
tes
154nobodyさん:2014/03/22(土) 00:49:43.59 ID:???
windowsXP ショートカットのパス

---------
C:\WINDOWS\system32\cmd.exe /k C:\test.pl6
---------

/k は実行後にウインドウを閉じないオプション。
拡張子 pl6 を perl6.exe に関連付けしておく。
test.pl6 にperl6のテストコードを書いて実験する。
155nobodyさん:2014/03/23(日) 15:15:41.32 ID:???
#!/usr/bin/perl6
my $str;
$str := "AAABBBCCC";
say $str.trans( 'A'=>'a', 'B'=>'b', 'C'=>'c' );
say "\n"~$str;

---結果---
aaabbbccc

AAABBBCCC
156nobodyさん:2014/03/26(水) 20:28:04.50 ID:???
### winXP で文字コードの 『et_EE.ISO8859-1』 を使えるようにする手順

!!! 試すときは仮想マシンを使うこと。環境が壊れて文字化けだらけになるため。 !!!

1、「コントロールパネル」 → 「地域と言語のオプション」
2、「日本語」 や 「日本」 と設定されている所を全て 「エストニア」 に設定する。
3、PC再起動

=> perl から et_EE.ISO8859-1 が使用可能になる。

順番が s z t u に変わったことを確認。ただ、 [a-z] で t 以降もマッチするのは変わらず。

[FreeBSD] - 2005/9/3 ( => FreeBSD4.10? )
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014529.html
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014531.html

正規表現 Part11
http://toro.2ch.net/test/read.cgi/tech/1363769640/330,325
157nobodyさん:2014/03/26(水) 22:02:12.05 ID:???
FreeBSD - 2005/9/5
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014529.html
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-September/014531.html

正規表現 Part11
http://toro.2ch.net/test/read.cgi/tech/1363769640/330,325

[[ winXPで et_EE.ISO8859-1 を使う ]]

1、「コントロールパネル」 => 「地域と言語のオプション」
2、「日本」 「日本語」 を全て「エストニア」 に変更。
3、PC再起動

perlで s z t u の順になるのを確認。しかし [a-z] が t u 以降にもマッチするのは変わらなかった。
=> 順番が変わることによるトラブルを避けるために対策されている?

※ これをやると環境の一部がエストニア語で上書きされ日本語に戻せなくなるので
試すなら 「VM ware」 や 「Virtual PC」 等の仮想マシンで試しましょう。

2005/9/5 に問題報告がされているのでそれ以前にリリースされたFreeBSDを使って試せば
完全に再現出来る可能性大。そして 4.11で再現出来なくなっていれば対策が取られたということになる。
158nobodyさん:2014/03/30(日) 04:03:56.61 ID:???
--------c:\test.pl-----------
use locale;
print +(sort grep /[a-z]/i, map { chr } 0..255), "\n";
--------c:\test.pl-----------

C:\>perl test.pl
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsSzZtTuUvVwWxXyY

C:\>perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x86-multi-thread

-----------------------------------
↓これを使わなくても順番が変わった。
use POSIX qw(setlocale LC_ALL);
setlocale(LC_ALL, "et_EE.ISO8859-1");
コンパネで「エストニア」と指定しただけで「et_EE.ISO8859-1」は未指定の状態。
-----------------------------------
/[a-z]/i を /\w/ に変えると英字以外の文字も英字の間に
挟まっていることが確認出来る。
159nobodyさん:2014/03/30(日) 04:24:51.20 ID:???
--------c:\test.pl-----------
use locale; # これが無いと順番が変わらない
use POSIX qw(setlocale LC_ALL); # コメントアウトしても変化なし
setlocale(LC_ALL, "et_EE.ISO8859-1"); # コメントアウトしても変化なし

my $abc;
$abc = "STU";
$abc =~ s/[A-Z]/hit/g;
print $abc."\n";
--------c:\test.pl-----------

[結果] hithithit
順番が変わっていれば S にしかマッチしないはずだが3文字すべてに
マッチしている。

LC_ALL を LC_CTYPE や、 LANG などに変えたり、test.plを保存するときの
文字コードをutf-8からshift_jisに変えたりしても結果変わらず。

XPsp3+perl5.16.3の環境で S だけにマッチさせる手段は無いと思われる。
160nobodyさん:2014/03/30(日) 05:25:46.81 ID:???
>>156
「辞書順」はロケールに依存するが「文字コード順」は文字コードに依存する、んじゃね?
文字集合の範囲指定が文字コード順と定義されているなら、
いくらロケール切り替えても文字コード切り替えない限り無意味だろう。

で、文字集合の範囲指定ってどっちだと定義されてるの?
161nobodyさん:2014/03/30(日) 14:02:22.42 ID:???
>>160
俺はロケールや文字コードの知識はほとんど無いんでよく分かってない。
↓は winXPsp3 + perl5.16.3 + ロケール = 「日本」 の環境での実験結果。

・ [ァ-ィ] が ア にマッチするか実験。( 文字コード順ならマッチしないはず )

----------------------------------------
use locale;

if ( "ア" =~/[ァ-ィ]/ ){ print "hit\n"; }
else { print "no hit\n"; };
----------------------------------------
結果: hit ( マッチしたので文字コード順ではない )

この環境での範囲指定は↓の順みたい。これはshift_jisの並び順とは違う。(これが辞書順?)
----------------------------------------
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZァアィ
スセソタチッツテトナニヌネノハヒフヘホマミムメモャヤュユョヨラリルレロワヲン
----------------------------------------

文字コードでなくロケールに依存するという発想は思い付かなかったわ、そっちの線で
また実験しながら遊んでみるよ、辞書順とやらも調べてみる。ヒントありがとう。
162nobodyさん:2014/03/31(月) 00:44:57.15 ID:???
(>>156)
ついに [a-z] が t 以降にマッチしない動作の再現に成功!
et_EE.ISO8859-1 の代わりに et_EE.ISO8859-15 を使ったら再現出来ました!

今まで助言をくれたみなさんありがとう〜。自分一人じゃ絶対無理だった。

↓こちらの方々にも感謝〜

初心者もOK! FreeBSD質問スレッド その117
http://toro.2ch.net/test/read.cgi/unix/1380865524/938-954n

詳しい手順はもう少し調べて整理してから載せます。
163nobodyさん:2014/04/01(火) 22:34:44.19 ID:???
正規表現道場 in ジオシティーズ
http://akiba.geocities.jp/hp20140401/

とりあえず場所確保。
164nobodyさん:2014/04/12(土) 17:21:41.17 ID:???
2ch .scに移転しました。

正規表現道場 Part2
http://nozomi.2ch .sc/test/read.cgi/php/1348048723/l50

■ 2ch.netの問題点

・ 2chscがNGワードになってるので正規表現をスレに貼るのに支障が出る。何より言論統制はイクナイ。
・ 管理人が今後どう動くか予測が付かない。
 自暴自棄になりIPや書き込み履歴を大公開して逃走する可能性すらある。会社IPの人は注意。
165nobodyさん:2014/04/12(土) 20:53:07.28 ID:kZRku0LV
もうこっちに帰ってくるなよ
166nobodyさん:2014/04/15(火) 11:21:18.41 ID:qQPWwAKL
使用しているのはYahoo! Pipesのregexです
http://d.hatena.ne.jp/dacs/20080422/1208868051

○○/△△&amp;#xd;[□□

という文字列から△△だけを抜き出したくて、色々試してみているのですがどうもうまくいきません

".*/" -> replace -> ""
"\&amp;#xd;.+" -> replace -> ""

だと思うのですが、何か間違いがあるのでしょうか?
ちなみに

"[.+" -> replace -> ""

も試してみましたがダメでした
167nobodyさん:2014/04/15(火) 20:38:11.07 ID:CfZz5H/X
Yahoo! Pipesの仕様なんて知らんが
文字列の開始も終わりも指定してないということは
.*/で一番最後の/までが対象として消える可能性はある
168nobodyさん:2014/04/16(水) 10:42:38.10 ID:???
>>167
ありがとうございます、確かめてみます
169nobodyさん:2014/05/08(木) 02:37:21.25 ID:???
ファイル検索ツールでパスを入力する時、「\」「/」を入れると候補が0になってしまいます
d:\\abc\\123\\ のように入力しているのですが、間違っていますか?
170nobodyさん:2014/05/08(木) 03:20:39.96 ID:Zyar7s4i
そのファイル検索ツールのところで聞けばー
171nobodyさん:2014/05/22(木) 01:25:49.65 ID:???
sc連投規制中なう。
172nobodyさん:2014/05/22(木) 14:43:31.27 ID:???
(sc>>212)
>qr/\"((?:\\[\\\"]|.)*?)\"/
> これはよっぽど自信がないと書けない書き方だ。

今考えると弾たんは単に2文字否定の作り方を知らなかっただけだな・・。
知ってたらこんなあやふやなものを作ろうなんて思わないし。

早さに拘るのに早い正規表現の作り方を知らないというちょっと残念な弾たん。
他の正規表現を見ても正規表現自体のスキルは高くない。
なんでもこなすオールラウンダーだから薄く広くになるんだろうな。

しかしこの程度の正規表現スキルでcpanのモジュール作って大丈夫なんだろうか。
探せばバグが出てきそうな予感。
173nobodyさん:2014/05/22(木) 15:18:43.78 ID:???
正規表現のスキル自体とモジュール作成能力には直接的な相関関係はないからなあ・・・
174nobodyさん:2014/05/22(木) 16:18:04.88 ID:???
(‥ )フーン
175nobodyさん:2014/05/22(木) 16:49:22.13 ID:???
そういう指摘するだけでモノ作ったり貢献してなさそうなお前はもっと駄目な人間だから安心しろ。
弾はなんだかんだ色々作ってるし色々な方面に貢献してる。
176nobodyさん:2014/05/22(木) 18:11:53.77 ID:???
指摘することも立派な貢献だと思いますよ。現に指摘によって処理時間が半分以下になってますし。
177nobodyさん:2014/05/23(金) 17:54:18.09 ID:???
まだ連投規制が解除されないなう

## m//

キャッシュを保持してない状態では空文字列にマッチする。
うっかりするとバグの原因になり得る。
178nobodyさん:2014/05/23(金) 19:00:28.59 ID:???
.scの連投規制は俺も食らったけど(専ブラだと「書き込めたかも…」で書けてない状態)、
Webブラウザで投稿したらBOT疑惑なのでCapchaしろになってそれで解除できた。

URLを貼りまくって連投規制になった場合は知らん。
179nobodyさん:2014/05/23(金) 19:22:48.54 ID:???
>>178
俺の場合は「連続投稿は禁止されています。Error!」って出るだけ。
普通に連続投稿が原因で規制食らってるみたいだからもうダメかも分からんね。

人が少ないから自然に独り言みたいになるのにそれで規制されたら
ますます人少なくなるなw
180nobodyさん:2014/05/23(金) 20:03:59.73 ID:Hym2JLxi
たらこテョンねるの話はたらこテョンねるでやれ
181nobodyさん:2014/05/23(金) 22:52:00.36 ID:???
パールを使った正規表現
http://omatomen.net/archives/1002062987.html
182nobodyさん:2014/05/24(土) 02:35:30.04 ID:???
>>2 正規表現メモ

(?num) の説明文にある・・

-------------------
(\()?[^()]+(?(1)\))
-------------------

これは (?num) とはまったく関係ない正規表現。ただの条件文。
183nobodyさん:2014/05/24(土) 15:06:27.80 ID:???
>>182
----------------------------
(?(R)...) PCREで、再帰的パターンの開始を示します。
<(?:(?(R)\\d++|[^<>]*+)|(?R))*>
----------------------------

説明文は間違い。これは条件式の条件。\\d は \d の間違い。

perldoc.jp
http://perldoc.jp/docs/perl/5.14.1/perlre.pod

(?(condition)yes-pattern|no-pattern) の項目を参照。
184nobodyさん:2014/05/27(火) 02:44:28.34 ID:???
詳説 正規表現のAmazon値 (1年前との比較)

・古本
初版 &amp;nbsp;500円 → 1998円
2版 1600円 → 3150円
3版 4000円 → 3709円

・新品
3版 5184円

Amazon - "正規表現"
http://www.amazon.co.jp/s/field-keywords=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE
185nobodyさん:2014/05/27(火) 03:16:35.15 ID:???
文字参照の処理、間違えてますよ > 2ch.net
186nobodyさん:2014/05/27(火) 03:43:16.09 ID:???
ttp://cpansearch.perl.org/src/DANKOGAI/Unicode-Char-0.02/lib/Unicode/Char.pm

↓ ^ か \A 忘れてね?

------------------------
$method =~ s/.*:://o;
------------------------
187nobodyさん:2014/05/27(火) 03:49:35.83 ID:???
----------------------------------------------------------
my ($hex, $name) = ($line =~ /^([0-9A-Fa-f]+)\s+(.*)/);
next if $name =~ /[a-z]/; # range, not character
----------------------------------------------------------

2行目だけ小文字に限定されてる。これで良いのか悪いのかは分からないが。
188nobodyさん:2014/05/27(火) 14:20:55.14 ID:???
ttp://cpansearch.perl.org/src/DANKOGAI/Lingua-JA-Numbers-0.04/lib/Lingua/JA/Numbers.pm
-----
せっかく [eE] と書いてるのに /i
= ($num =~ /([+-])?(\d+)(?:\.(\d+))?(?:[eE]([+-]?\d+))?/io);
-----
ちゃんと動くんだろうけどアンカー付けないのが気持ち悪い。
$int =~ s/(.*)(.{48})\z/$2/o;
-----
これミスでね? [k|g]
if ($style =~ /(?:romaji|[k|g]ana)$/){
189nobodyさん:2014/05/27(火) 14:23:03.78 ID:???
本人に直接言う勇気がないらしい。まこと残念な人である
皆はこうならぬように
190nobodyさん:2014/05/27(火) 14:28:03.82 ID:???
今度は大文字限定。
$ja =~ tr/[G-Z]//d;

ITPro: tr///d
http://itpro.nikkeibp.co.jp/article/Reference/20080930/315784/
191nobodyさん:2014/05/27(火) 14:50:18.14 ID:???
あれ、/o が使われてる。なんでapache logのltsv変換には
使われてなかったんだろう。ああいう時こそ効果的なのに。
192nobodyさん:2014/05/27(火) 15:43:22.68 ID:???
■ combined2ltsv.pl の re で /o の有無をタイム計測

/o なし
12724/s

/o あり
31689/s

/o あり は2.5倍早い。これは報告したほうがいいかも。
193nobodyさん:2014/05/27(火) 16:02:40.01 ID:???
(>>186)
これに /o がついてるとなんか笑ってしまうw

余談追加。俺は報告なんかしないんで報告したい人がいたらしてね。

小飼 弾が手負いのうちに容赦なくツッコミを入れておく
http://akiba.geocities.jp/hp20140401/2014/006.html
194nobodyさん:2014/05/29(木) 03:21:04.45 ID:???
(>>188)
---------------
use utf8;
---------------
\d
---------------

弾たんにならこれで通じるだろう。(確信)
195nobodyさん:2014/05/29(木) 16:45:47.77 ID:???
神戸大:オートマトン
ttp://kurt.scitec.kobe-u.ac.jp/~kikyo/lec/07/automaton/k5.pdf

行列の次は集合か・・もう忘れたよ・・覚えたことないけど。
196nobodyさん:2014/05/30(金) 01:37:35.60 ID:???
関西学院大学: 集合
http://www.kwansei.ac.jp/hs/z90010/sugaku1/kakuritu/syugo/set.htm

とっても分かりやすい。・・あれ?これ大学でやる内容か?中がっ(ry
197nobodyさん:2014/05/30(金) 01:52:56.08 ID:???
↑ /hs/ = ハイスクールでした。
198nobodyさん:2014/05/30(金) 06:37:19.19 ID:???
Q、 perlの正規表現では \A\z == ε である。では、 ??? == φ の ??? は何になるか。
199nobodyさん:2014/05/30(金) 19:16:27.41 ID:???
if( () =~ "" ){ print "hit\n"; } else { print "no\n"; };
結果 hit

答え、なし
200nobodyさん:2014/05/30(金) 21:43:37.74 ID:???
() と "" を比較して no を返す方法はあるか。( φとεの比較 )

() eq ""
() == ""

"" eq undef
"" == undef

() eq undef
() == undef

すべてtrueが返る。
201nobodyさん:2014/05/30(金) 22:31:10.55 ID:???
弾たん : perl - にも真偽値は存在する
http://blog.livedoor.jp/dankogai/archives/51268304.html

ちなみにブログのトップではGoogle Chromecastをボロクソに叩きつつ、Chromecastへのamazonアフィを
張るというすご技を展開されております。

こういう人相手に>>193を報告しにいってもスルーされるだけだと思うよ。カネにならないからね。
202nobodyさん:2014/06/01(日) 03:26:43.94 ID:???
てすてす &
203nobodyさん:2014/06/01(日) 10:07:29.84 ID:???
>>201
それ、お前向けにカスタマイズされてるだけだろ。
204nobodyさん:2014/06/01(日) 10:29:53.68 ID:???
こういう陰口叩くやつよりマシ
205nobodyさん:2014/06/06(金) 06:34:46.02 ID:???
test
206nobodyさん:2014/06/06(金) 06:36:44.82 ID:???
test
207nobodyさん:2014/06/06(金) 06:39:17.80 ID:qyn3RpL3
test
208nobodyさん:2014/06/09(月) 20:39:55.26 ID:Xlk9Lxk9
javascriptでhtmlタグ内以外での検索をしようとしていますが、上手く行きません。お助け下さい。

lat = 'あい';
body = '<a href="あい">あい</a>';
reg = new RegExp(">[^<][\s\S]*?" + lat + "[\s\S]*?<","m");
body.match(reg);
console.log(reg.index);

13が返って欲しいのですが、undifinedになります。
209nobodyさん:2014/06/10(火) 15:56:17.87 ID:???
当スレは中級者以上向けになっているのでこちらへ。

Regular Expression(正規表現) Part12
http://peace.2ch.net/test/read.cgi/tech/1387257592/

jsならieか否か、または両方かも書いたほうが良いでしょう。
210nobodyさん:2014/06/10(火) 18:29:25.24 ID:pkqjoeBF
>>209
ご誘導ありがとうございます!
211nobodyさん:2014/06/19(木) 11:10:47.66 ID:???
212nobodyさん:2014/06/21(土) 14:09:56.93 ID:???
>>1
関連スレのテンプレ入り

理論計算機科学
http://peace.2ch.net/test/read.cgi/tech/1403321199/
213nobodyさん:2014/06/25(水) 15:49:19.16 ID:???
確率の基本 - 青空学園
http://aozoragakuen.sakura. ne.jp/probability/probability.html

豪快に脱線中。言論統制対策でスペース。
214nobodyさん:2014/06/25(水) 16:17:08.28 ID:???
このスレって誰かの日記帳スレだったの?
215nobodyさん:2014/06/25(水) 16:21:27.13 ID:???
俺のメモ帳だけど?
216nobodyさん:2014/06/25(水) 16:26:13.98 ID:???
ならコテ付けろ
217nobodyさん:2014/06/26(木) 14:34:09.08 ID:???
確率 1/10 で当たるんなら 10 回やれば当たる?
http://www.math.kobe-u.ac.jp/HOME/saji/mathyomi/probability.html

確率は正規表現の処理効率向上に使う。
"|" による分岐で確率の高いほうを前に置いたほうが早くなるetc..
218nobodyさん:2014/06/27(金) 22:19:38.37 ID:???
## 確率の実験

my $cnt=0;

for (my $i=0; $i<1000000; $i++){

if ( int(rand(3)) == 0 || int(rand(3)) == 2 || int(rand(3)) == 1)
{
$cnt++;
}# if

} #for
print "$cnt\n";

__END__

&& ・・・ A∧B
|| ・・・ A∨B
219nobodyさん:2014/06/29(日) 14:17:12.43 ID:???
傘スレの無能っぷりが酷い。正規表現作ってやりゃ済む話じゃないか。
220nobodyさん:2014/07/07(月) 04:54:48.68 ID:???
\Gを知らないのか使えないのか知らんけど・・
テキストエディタの正規表現には関わりたくないや。
221nobodyさん:2014/07/07(月) 06:08:47.66 ID:???
>>220
知らなかったの方だけど、こそこそ指摘するとか鬱陶しい奴だな…
222nobodyさん:2014/07/07(月) 07:13:43.90 ID:???
\G(?:@command|,)

タダでスキルアップさせてやったんだから文句言うなっしー。
223nobodyさん:2014/07/16(水) 02:27:41.11 ID:???
ときわ台学
http://www.f-denshi.com/

代数系、線形代数。
224nobodyさん:2014/07/28(月) 11:12:01.30 ID:tZb2oMPI
★2ch勢いランキングサイトリスト★

◎ +ニュース
・ 2NN
・ 2chTimes
◎ +ニュース新着
・ 2NN新着
・ Headline BBY
◎ +ニュース他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
◎ 実況込み
・ 2勢
・ READ2CH
・ i-ikioi

※ 要サイト名検索
225nobodyさん:2014/09/28(日) 01:14:49.25 ID:???
> ※ ヤフーのHTMLには javascript が使われており、正規表現がコードの一部に誤爆します。
・・・ならテストデータ変えろよと。
226nobodyさん:2014/10/11(土) 01:16:14.20 ID:???
テストし直すのが面倒でねぇ・・。
227nobodyさん:2014/10/25(土) 17:29:59.52 ID:???
群論入門
http://www.nurs.or.jp/~lionfan/ironna_05.html

その1 - 17P

× 60度
○ 120度
228nobodyさん:2014/11/29(土) 17:23:33.57 ID:???
preg_replaceで文章内に<br /><br />が出現した以降の文字をすべて削除するのはどうすればいいですか?
229nobodyさん:2014/11/30(日) 04:03:51.56 ID:???
>>228
<br /><br />.*$
230nobodyさん:2014/12/01(月) 14:32:58.92 ID:???
>>229
サンクスできました
231nobodyさん:2014/12/01(月) 14:46:21.20 ID:???
「正規表現」などを使う場合には、【regex railroad diagram】を利用すれば、とても分かりやすく「図式化」してくれます
http://plus.appgiga.jp/masatolan/2014/10/31/54305/
232名無しさん@そうだ選挙に行こう:2014/12/13(土) 19:13:38.56 ID:???
2ch専ブラで「1文字だけしか書かれていないレス」をNG処理する場合はどういった表現をすればいいのでしょうか
233名無しさん@そうだ選挙に行こう:2014/12/13(土) 20:39:31.42 ID:???
概出
234名無しさん@そうだ選挙に行こう:2014/12/13(土) 20:51:51.46 ID:???
そこをなんとか
235nobodyさん:2014/12/19(金) 13:42:01.95 ID:fItp7j1V
もとかりやゆいか
236nobodyさん:2014/12/23(火) 07:55:27.87 ID:vHmDJqQI
正規表現で電話番号を確認するにはどうしたらいいですか?

固定番号
携帯番号
フリーダイヤル
国際番号

といったものがあるのでわかりません。(緊急ダイヤル系は無視して構いません)
どなたか正規表現を教えてください
237nobodyさん:2014/12/23(火) 10:39:05.73 ID:???
電話番号とは何かって質問はスレ違い。
自分の定義する電話番号はこうですって(正規表現以外の方法で)提示してください。
238nobodyさん:2014/12/23(火) 12:20:49.97 ID:???
>>237
そういう質問はされてないけどな
239nobodyさん:2014/12/23(火) 13:12:39.81 ID:???
緊急ダイヤル系は無視して構いませんって、つまりそれが何だか含めた電話番号とは何ぞやを
考慮して回答しろって書いてあるじゃねーか。
しるかそんなモン。
240nobodyさん:2014/12/23(火) 13:31:46.62 ID:???
241nobodyさん:2014/12/23(火) 13:54:19.46 ID:vHmDJqQI
>>240
ありがとうございます!
参考にしてみます
242nobodyさん:2015/02/03(火) 02:15:25.40 ID:???
データから例をあげないと書きようがないよね
ハイフンあったりなかったり、それら含めて全部なのか・・・
243nobodyさん:2015/02/09(月) 08:34:16.86 ID:???
1.文字列の末尾にある数字を1〜2桁まで抽出したい(末尾に1文字までなら数字以外が入っても構わない)

2.抽出した数字が1桁の場合は先頭に「0」を足して二桁に変えたい

これを正規表現1行で行いたいのですが
 検索:.*?(\d{1,2})(\D{0,1})$
 置換:\1
これで1つ目はいけたんですが、さらに2つ目の内容を正規表現1行で行うことは可能でしょうか?
244nobodyさん:2015/02/20(金) 16:08:02.61 ID:s+oB9mxD
よく使う正規表現のまとめ

http://know-how-tree.com/archives/1271
245nobodyさん:2015/02/20(金) 20:10:32.19 ID:kYODqEh/
アフィ注意
246nobodyさん:2015/02/22(日) 12:03:22.28 ID:???
間違いあるしまとめすぎてて意味不明だしゴミだ。
247nobodyさん:2015/02/22(日) 14:01:19.31 ID:q7pjx80v
>>244
しっかり纏められて助かります^^b ありがとう!
248nobodyさん:2015/02/23(月) 08:57:45.46 ID:???
ゴミの分際で広告主張しすぎなんだよ
249nobodyさん:2015/02/23(月) 11:36:18.61 ID:b/xiRyE3
>>244
ありがとう!!!分かりやすい!!
250nobodyさん:2015/02/26(木) 16:01:00.90 ID:???
> \G 直前の一致文字列の末尾

こう覚えちゃう人多いんだよねぇ。こういうサイトが嘘広めてるんだろうな。
251nobodyさん
お前はいったい何なんだ?
必死に勉強したわけでもなく、必死に働いたわけでもなく
何も築かず、耐えず、乗り越えず、ただダラダラ過ごし
自分の都合の良い妄想だけを垂れ流す。

お前は今のゴミみたいな人生を、今は仮、本当の自分を使っていないだけ
そう飽きず言い続け、結局はそのまま死ぬ

最底辺キモヲタで底辺人生の今が本物であることに、そろそろ気が付こうぜ!