[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 06/04 08:06 / Filesize : 68 KB / Number-of Response : 205
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現道場 Part2



1 名前:nobodyさん [2012/09/19(水) 18:58:43.51 ID:bdgNsY2f]
【正規表現道場の掟】

・言語不問

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

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

前スレ
正規表現道場
kohada.2ch.net/test/read.cgi/php/1168450843/

3 名前:nobodyさん mailto:sage [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|                          /
  ./   ヾ.、                  ,. ' ´

4 名前:nobodyさん mailto:sage [2012/10/15(月) 10:43:51.98 ID:???]
>>2
正規表現最新リンク集2005
web.archive.org/web/20100410230942/http://www2.famille.ne.jp/~akio1998/l_grep.html

個人名載ってるしこのまま外しちゃってもいいかもしれない

5 名前:nobodyさん [2012/10/19(金) 12:38:26.99 ID:ZQDqri43]
過疎スレ状態になっているっぽいですが質問宜しいでしょうか?

6 名前:nobodyさん mailto:sage [2012/10/19(金) 12:44:45.04 ID:???]
>>1

7 名前:nobodyさん mailto:sage [2012/10/19(金) 19:53:20.37 ID:???]
質問は?

8 名前:nobodyさん mailto:sage [2012/10/30(火) 16:10:01.92 ID:???]
>>5の人とは別人ですが質問がありますのでお願いします

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

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

 ^ば(0または任意の1文字)か
以上のように、
まとめることは可能でしょうか?

9 名前:nobodyさん mailto:sage [2012/10/30(火) 17:54:51.44 ID:???]
ば.?か

ばいか(売価)とかも入るけどねー

10 名前:nobodyさん mailto:sage [2012/10/30(火) 21:28:35.04 ID:???]
〜ばかり
ばっかり
ばんから

11 名前:nobodyさん mailto:sage [2012/10/31(水) 08:02:36.23 ID:???]
ばんかい
バイカム

こういうのは>>8の指定の方が間違いがないね



12 名前:8 mailto:sage [2012/10/31(水) 12:31:50.64 ID:???]
まさに、>>9のようにまとめるられる書式を知りたかったのです!が…
皆さんご指摘のことを読むと確かにおっしゃるとおりですよねー

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

ともあれ、お答えくださった皆さん、とても参考になり助かりました
ありがとうございました

13 名前:nobodyさん mailto:sage [2013/01/29(火) 08:17:24.91 ID:???]
せめて同じ文字はまとめるか
^(ば(か|っか|ーか))

14 名前:nobodyさん [2013/02/10(日) 11:51:32.02 ID:m9q+FHWZ]
パスワードの登録で
半角アルファベットと半角数字の組み合わせで8文字以上
という条件を考えてるんですが、以下じゃダメですよね?

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

アルファベットと数字の組み合わせ(アルファベットも数字もどちらもある)とするには
どうしたら良いでしょうか?

15 名前:nobodyさん mailto:sage [2013/02/10(日) 12:46:13.25 ID:???]
>>14みたいな正規表現のちょっとしたテクニック集とかどっかにまとまってないかね?

16 名前:nobodyさん mailto:sage [2013/02/13(水) 23:30:20.10 ID:???]
/^(?=(.*\d[a-zA-Z].*)|(.*[a-zA-Z]\d.*))\w{8,}$/

数字英字 もしくは 英字数字という並びが存在する英数字8文字以上

17 名前:nobodyさん mailto:sage [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.

おもしろかった。

18 名前:nobodyさん mailto:sage [2013/03/04(月) 01:35:07.40 ID:???]
>>13
これはひどい

19 名前:nobodyさん mailto:sage [2013/03/09(土) 22:12:30.87 ID:???]
^([a-z]|[A-Z]|[0-9]){8,}$

はダメ?

20 名前:nobodyさん mailto:sage [2013/03/09(土) 23:24:50.86 ID:???]
ダメ

21 名前:nobodyさん mailto:sage [2013/03/10(日) 23:50:57.56 ID:???]
>>19
大文字と小文字を区別したいってことなら

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

でおk



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

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

【サッカー】xxxxx【野球】

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

なんで?(´・ω・`)

23 名前:nobodyさん mailto:sage [2013/03/18(月) 20:21:31.67 ID:???]
>>22
それだとテニスもマッチしないはずだが
[^】] は「 】」以外の1文字ってことになる
それとShift_JISなんて捨ててUTF-8使おうぜ

24 名前:nobodyさん [2013/03/18(月) 22:12:52.90 ID:XSCUuGgi]
>>23
すません、[^】]+です。
SJISで何とか…

25 名前:nobodyさん mailto:sage [2013/03/19(火) 00:22:00.75 ID:???]
mb_regex_encoding("sjis");
mb_ereg ("^【([^】]+)】" ,$txt,$ret);

pregはSJIS使えません

26 名前:nobodyさん mailto:sage [2013/03/24(日) 00:53:34.57 ID:???]
>>22
文字列をアスキーコードに変換してから検索しろ

27 名前:nobodyさん mailto:sage [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の最後の拡張子にこの文字列が入ってるかチェック出来るようにしたいのですが
どうすればいいでしょうか?

お願いします。

28 名前:nobodyさん mailto:sage [2013/05/16(木) 11:28:59.91 ID:???]
最後をこれに差し替え
\.(rss|rdf|xml)$/

29 名前:nobodyさん mailto:sage [2013/05/16(木) 11:38:31.44 ID:???]
>>28
レスありがとうございます
ただこれに差し替えるだけだと

www.example.com/.rss

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

よろしくお願いします。

30 名前:nobodyさん mailto:sage [2013/05/16(木) 11:47:36.80 ID:???]
[^\\/:,;*?"<>|]\.(rss|rdf|xml)$

31 名前:nobodyさん mailto:sage [2013/05/17(金) 09:33:25.55 ID:???]
>>30
お礼遅くなってすいません
ありがとうございます!
うまくいきました!



32 名前:nobodyさん [2013/07/20(土) NY:AN:NY.AN ID:75R8ikZF]
PHPのpregでの正規表現について質問です。

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

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

<li>TITLE</li>

に変換させたいのですが、正規表現ではどう表したらいいのでしょうか?

33 名前:nobodyさん mailto:sage [2013/07/21(日) NY:AN:NY.AN ID:???]
保守

34 名前:nobodyさん [2013/07/25(木) NY:AN:NY.AN ID:2TH+2Iiw]
正規表現で解決できるのではと思い、こちらで質問させてください。

"ver.2 test.Test"という文字列を"ver.2 test. Test"のように
ピリオドの次の文字が大文字のときに限り半角スペースを挿入したいのですが
良い方法はないでしょうか?

35 名前:34 mailto:sage [2013/07/25(木) NY:AN:NY.AN ID:???]
>>34です。
正規表現のグループ化を用いることで解決できました。
安易に質問を投稿してしまい申し訳ございませんでした。

36 名前:nobodyさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ID:???]
せっかくなのでその正規表現を書いておきますねくらいの気持ちが必要だ。

37 名前:nobodyさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ID:???]
>>34
preg_replace('/\.(?=[A-Z])/','. ',$str);

38 名前:nobodyさん mailto:sage [2013/09/06(金) 20:12:17.12 ID:???]
>>32
見ての通り超手抜きだけど例の通りか属性値のダブルクォートが無いぐらいならこれで大丈夫

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


> PHPのpregでの正規表現

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

preg_replace("/^(.+<img.+title=\")(.+)(\" \/><\/a>)$/i", "<li>$2</li>", $input_lines);

39 名前:nobodyさん [2013/09/14(土) 18:05:14.35 ID:0qKO1mtd]
質問です。
PHP5で
preg_match ("/.*'.*/s", $_POST["value"])
としたときにvalueに「'」があってもマッチしない場合があるらしいのですがどういう文字列の場合でしょうか?
preg_matchはPCRE関数でPerl互換です。マルチバイトに対応していないのでその辺りに落し穴があるのかなと思うのですが。

40 名前:nobodyさん [2013/09/14(土) 19:42:16.21 ID:QgtFjJm6]
FireFoxでRSSリーダにFeedlyを使っています。
NGワードフィルターが正規表現なのですが教えて頂けないでしょうか。
"韓国"というキーワードをフィルタリングしたいです。

userscripts.org/scripts/show/172085

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

ちなみにそれは preg_match("/'/", $_POST["value"]) のようにシンプルに書くこともできる



42 名前:nobodyさん mailto:sage [2013/09/15(日) 10:43:39.46 ID:???]
>>40
使ったこと無いけど、"韓国"だったら完全一致なのでそのまま正規表現使わずに書けると思うけど

43 名前:nobodyさん mailto:sage [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ということでどなたか教えていただけませんでしょうか

44 名前:nobodyさん [2013/09/16(月) 04:52:23.59 ID:V1KLg8Lz]
韓|トンスル|ニダ|

45 名前:39 mailto:sage [2013/09/16(月) 18:13:41.90 ID:???]
>>41
マッチしない場合は無いようでした。
phpの設定の問題でpreg_matchがマッチできずfalseを返す場合があるらしいです。

46 名前:nobodyさん [2013/09/19(木) 16:03:12.92 ID:XGTpu0pg]
最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが

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

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

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

Janeでこれをあぼーんしたいんですが
同じ文字列が数行続いたかを調べられる正規表現はありませんか

47 名前:nobodyさん mailto:sage [2013/09/19(木) 19:40:04.05 ID:???]
>>46
1行文の2連投
thinkarc.blogspot.jp/2007/07/janeviewngex.html#NGEx_Contiguous_single-line

んでこれ以上は下で NGEx.txtを晒すスレ4
mattari.plusvip.jp/test/read.cgi/jane2ch/1325934427

48 名前:46 mailto:sage [2013/09/19(木) 23:50:13.04 ID:???]
>>47
ありがとうございます
無事あぼーん出来ました
直前の自分のレスも消えてます

49 名前:nobodyさん [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 ._.

50 名前:nobodyさん [2013/09/22(日) 02:25:21.73 ID:V8cai0+K]
それだと最初に出現するNN\s位置からマッチングが始まって、
最短で後続するVBNまでがマッチする

こうじゃないか?
.*(NN\s.*?VBN)

51 名前:49 mailto:sage [2013/09/22(日) 08:30:46.88 ID:???]
>>50
ありがとうございます。
しかし、、、.*(NN\s.*?VBN) だと、今度は、行全体がマッチしてしまいます。。。
ムムム



52 名前:nobodyさん mailto:sage [2013/09/22(日) 14:36:58.31 ID:???]
NN arからじゃ駄目なん?
NNじゃ>>50の言うとおり最初のNNからマッチするんだし

53 名前:49 mailto:sage [2013/09/22(日) 15:17:49.08 ID:???]
>>50
>>52
ありがとうござしました。
プログラム板でも聞いてみたところ、下のような表現を教えてもらいました。
NN\s((?!NN).)*?VBN

54 名前:nobodyさん mailto:sage [2013/09/22(日) 20:33:23.35 ID:???]
>>53
結果教えてくれてありがと
前方参照否定位置指定子かー

NNが来ないNN空白〜VBNにマッチするのね

55 名前:nobodyさん mailto:sage [2013/09/23(月) 15:50:05.13 ID:???]
ええい、お前はもう下がっておれ
webprog板の面汚しめ

56 名前:nobodyさん mailto:sage [2013/09/23(月) 21:29:41.29 ID:???]
php使いが鼻で笑われる所以(´・ω・`)

57 名前:nobodyさん mailto:sage [2013/09/23(月) 21:37:40.88 ID:???]
(´・ω・`)←この顔文字、3年ぶりぐらいに見たw

58 名前:nobodyさん mailto:sage [2013/09/25(水) 21:08:33.09 ID:???]
>>57
女友達いないの?

59 名前:nobodyさん mailto:sage [2013/10/07(月) 05:09:32.74 ID:???]
PHP5.4です。
'hoge山田
太郎2様hoge'
(2の数字は色々変わります)
の中から'太郎2様'をマッチさせたいのですが
/山田[\s\S]*?(/太郎.*?様/u)様/u
でうまくいかないです。どなたか教えて下さいまし。。。

60 名前:nobodyさん mailto:sage [2013/10/07(月) 15:52:08.10 ID:???]
太郎\d+様

61 名前:nobodyさん mailto:sage [2013/10/07(月) 16:36:42.52 ID:???]
>>60
なんとー
ありがとうございます



62 名前:nobodyさん mailto:sage [2013/10/09(水) 23:36:54.74 ID:???]
行の最後に[a-z0-9]が9文字、はどう指定するんでしょうか
([a-z0-9]){9}$
$(([a-z0-9]){9})
と思ったのですが、うまくいかないです。

63 名前:nobodyさん mailto:sage [2013/10/10(木) 10:38:47.00 ID:???]
[a-z0-9]{9}$

64 名前:nobodyさん mailto:sage [2013/10/10(木) 11:09:37.77 ID:???]
ありがとうございます!

65 名前:nobodyさん [2013/10/31(木) 18:34:38.76 ID:GYE7WPbH]
ab(cd)efg
とある時
(.*?)
で"(cd)"は返ってきますが、
"cd" とカッコの中身だけを取りたい時はどうすればいいでしょうか
"(" と ")" を置換するしかないですか?

66 名前:nobodyさん mailto:sage [2013/10/31(木) 18:49:48.33 ID:???]
言語、、つか環境は?

67 名前:nobodyさん [2013/10/31(木) 21:18:35.06 ID:odoD21Ul]
エスケープしろよ

68 名前:nobodyさん mailto:sage [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>は独自タグで間に入る文字列長、フォーマットは不定です。
どうすれば期待通りの振る舞いに出来るでしょうか?

69 名前:nobodyさん mailto:sage [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)

70 名前:nobodyさん [2013/11/30(土) 00:49:11.30 ID:ykQSlGiP]
?

71 名前:nobodyさん mailto:sage [2013/11/30(土) 23:20:57.87 ID:???]
正規表現の練習になるお題ください



72 名前:nobodyさん mailto:sage [2013/12/04(水) 06:52:39.64 ID:???]
>>71
お題が欲しけりゃJaneのReplaceStr.txtとかNGEx.txtとか自分でいじってみればいいんじゃないの?
練習はReplaceStr Toolでやれるから。
グループ化を使って解析させると幾分わかりやすくなる。

73 名前:nobodyさん [2013/12/08(日) 20:14:52.93 ID:1LHzvpJQ]
おしえてください。

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


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


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

という結果を期待して

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


と書いたんですが、使い方を間違っているのか?
うまくいきません。
他の記述方法はないでしょうか?

74 名前:nobodyさん [2013/12/20(金) 03:59:14.24 ID:JjVtc12l]
ム板の本スレが新しくなったため報告させていただきます。

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

■注意
工作員がわざと重複させて立てた偽スレを本スレだと偽って宣伝に来る可能性があります。
本スレは上記のみですので十分ご注意ください。

75 名前:nobodyさん mailto:sage [2013/12/22(日) 03:59:29.94 ID:???]
>>72
ReplaceStr Toolって?ググったが出てこない

76 名前:nobodyさん mailto:sage [2013/12/22(日) 08:24:16.49 ID:???]
>>75
これだろ。
ttp://1st.geocities.jp/neeetest/RepStrTool_2.8.zip

77 名前:nobodyさん mailto:sage [2014/01/12(日) 01:41:51.67 ID:???]
質問は>>74のスレにどうぞ。

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

檜山正幸のキマイラ飼育記
d.hatena.ne.jp/m-hiyama/20100603/1275546996

78 名前:nobodyさん mailto:sage [2014/01/13(月) 23:30:11.42 ID:???]
IT PRO - 形式言語とオートマトンを学ぶ (3/4)
itpro.nikkeibp.co.jp/article/lecture/20061127/254890/?ST=selfup&P=3

79 名前:nobodyさん mailto:sage [2014/01/15(水) 23:08:02.57 ID:???]
質問は>>74のスレにどうぞ。

www1.adachi.ne.jp/katz/primer/automata.html
会社の新人研修でオートマトンの講義を担当した。

80 名前:nobodyさん mailto:sage [2014/01/16(木) 03:06:09.07 ID:???]
計算機数学 町田 元
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

※ 全部正規表現に関係するリンクなんで荒らしではないです。
正規表現に関わるオートマトンの知識を付けたい方には参考になると思います。

81 名前:nobodyさん mailto:sage [2014/01/18(土) 22:50:11.07 ID:???]
有限オートマトンと正規表現 (ヤギ 野菜 狼)
ttp://www.i.kyushu-u.ac.jp/~takeda/Lectures/.../ComputationTheory01.pdf?



82 名前:nobodyさん mailto:sage [2014/01/19(日) 07:18:17.70 ID:???]
ある文字列を含まないものにマッチする正規表現
(?:(?!foo).)*

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

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

Q、では先読みを使って正しく動作させるにはどう書くべきか?

83 名前:nobodyさん mailto:sage [2014/01/19(日) 11:23:45.74 ID:???]
お望みの先読み使って書くなら /fo(?!o)/

だろうが、

こんなの使うくらいなら

if (/foo/) {

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

で、もはや正規表現使うコストももったいないくらいだから
普通は strpos()みたいな関数使うべきだろう。

84 名前:nobodyさん [2014/01/19(日) 15:12:27.67 ID:U6WWS19r]
先頭一致とか後方一致はsubstr使ってる
iオプション必要なら代わりにlc

85 名前:nobodyさん mailto:sage [2014/01/19(日) 15:26:00.19 ID:???]
c

86 名前:nobodyさん mailto:sage [2014/01/19(日) 17:13:11.44 ID:???]
>>83
>>82の内容を理解出来てないね・・

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

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

>関数使うべき
マラソン選手に車使うべきって言ってるようなもん。

87 名前:nobodyさん mailto:sage [2014/01/21(火) 04:23:32.47 ID:???]
正解はこちら↓

Perl正規表現雑技 - ある文字列を含まないものにマッチする正規表現
www.din.or.jp/~ohzaki/regex.htm#Without

88 名前:nobodyさん mailto:sage [2014/01/24(金) 01:21:47.01 ID:???]
うーむ、オートマトンの勉強というか、まだ触りしか学んでないんだが
既に文字列否定の正規表現を簡単に作れるようになってしまった。

チャリの運転と同じで、一旦出来るようになるとなんてことないね。

89 名前:nobodyさん mailto:sage [2014/01/24(金) 05:08:57.49 ID:???]
(次のお題)

abc かつ def を含まない文字列を表す正規表現を作れ。ただし先読みはNG。

90 名前:nobodyさん [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*
に分割したいです。

どのように書けば良いのでしょうか、ご教授願います。

91 名前:nobodyさん [2014/01/25(土) 17:37:15.39 ID:VUYYCfMh]
([abc]\*?)



92 名前:nobodyさん mailto:sage [2014/01/26(日) 00:17:59.26 ID:???]
このスレは道場と名の付いてる通り正規表現のスキルアップを目指すスレです。

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

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

93 名前:90 mailto:sage [2014/01/26(日) 13:40:59.38 ID:???]
>>91
ありがとうございました。勉強になります。

>>92
>>1も読めない糞は2chには向いていないと思うよ。
もう何十年も居座っていると予想されるが、そろそろ自覚しなよ。

94 名前:nobodyさん mailto:sage [2014/01/26(日) 23:09:13.31 ID:???]
ここはもう荒らしの本拠地になってるから仕方がないよ。
わざわざ煽りにム板まで出張してきてるし。

95 名前:nobodyさん mailto:sage [2014/01/27(月) 00:48:44.89 ID:???]
こちらは精神異常者の隔離スレとなっております

96 名前:nobodyさん mailto:sage [2014/01/27(月) 05:05:55.59 ID:???]
じゅんじゅんのきまぐれ
d.hatena.ne.jp/junjun777/20110927/regexp_not_include

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

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

ってあれ?あわわさんのほうが6時間早い。CPU時計の時差?

97 名前:nobodyさん mailto:sage [2014/01/29(水) 03:59:46.05 ID:???]
レベル高いスレにただいま。

98 名前:nobodyさん mailto:sage [2014/01/29(水) 04:05:21.14 ID:???]
荒らしの住み処
ただのクソスレ

99 名前:nobodyさん mailto:sage [2014/01/29(水) 05:11:24.62 ID:???]
ところで向こうの267は雑技たんなのかな?266、雑技のネタに使ってもよかですたい。

100 名前:nobodyさん mailto:sage [2014/01/29(水) 08:45:10.20 ID:???]
>>99
当たりw
266の書き方は考えたけど,今回のケースでは267の書き方で大丈夫と考えた.
そういや質問者は「1」を含まないって書いてあるのに,なぜ「123」? とは思ったなw

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

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

ちなみに266のミソは↓の辺りで微妙に使っていたりする.
www.din.or.jp/~ohzaki/regex.htm#NoEndTag

101 名前:nobodyさん mailto:sage [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 やね。



102 名前:nobodyさん mailto:sage [2014/01/30(木) 00:29:41.02 ID:???]
>>101
>1というのは実データとは違う省略形と考えた。
なるほど.確かに,初心者ほど状況説明が下手だからね.

>それと <\2> だと <font> になってしまうで・・ <\2\b やね。
単純なミスだな.指摘ありがとう.

103 名前:nobodyさん mailto:sage [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
修正乙!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<68KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef