正規表現道場 Part2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/09/19(水) 18:58:43.51ID:bdgNsY2f・言語不問
・質問も大歓迎。使用言語を書くのを忘れずに。
正規表現と関係ない話・質問は他スレへどうぞ。
前スレ
正規表現道場
http://kohada.2ch.net/test/read.cgi/php/1168450843/
0002nobodyさん
2012/09/20(木) 03:58:43.36ID:???●過去スレ
正規表現道場@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)
0003nobodyさん
2012/09/22(土) 03:58:02.23ID:???|:::ハ:.:.:.:.:.: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| /
./ ヾ.、 ,. ' ´
0004nobodyさん
2012/10/15(月) 10:43:51.98ID:???正規表現最新リンク集2005
http://web.archive.org/web/20100410230942/http://www2.famille.ne.jp/~akio1998/l_grep.html
個人名載ってるしこのまま外しちゃってもいいかもしれない
0005nobodyさん
2012/10/19(金) 12:38:26.99ID:ZQDqri430007nobodyさん
2012/10/19(金) 19:53:20.37ID:???0008nobodyさん
2012/10/30(火) 16:10:01.92ID:???拒否したいワード例
・ばか
・ばっかやろー
・ばーか
掲示板の拒否ワード機能を使って上のような言葉を
^(ばか|ばっか|ばーか)
このようにまとめているのですが、
もっと効率よくまとめられるような気がしています
^ば(0または任意の1文字)か
以上のように、
まとめることは可能でしょうか?
0009nobodyさん
2012/10/30(火) 17:54:51.44ID:???ばいか(売価)とかも入るけどねー
0010nobodyさん
2012/10/30(火) 21:28:35.04ID:???ばっかり
ばんから
00128
2012/10/31(水) 12:31:50.64ID:???皆さんご指摘のことを読むと確かにおっしゃるとおりですよねー
ば.?か、のような書式で運用できるかできないか、
掲示板のログとにらめっこしてみることにします
ともあれ、お答えくださった皆さん、とても参考になり助かりました
ありがとうございました
0013nobodyさん
2013/01/29(火) 08:17:24.91ID:???^(ば(か|っか|ーか))
0014nobodyさん
2013/02/10(日) 11:51:32.02ID:m9q+FHWZ半角アルファベットと半角数字の組み合わせで8文字以上
という条件を考えてるんですが、以下じゃダメですよね?
preg_match('/^[a-zA-z0-9]{8,}$/', $s);
アルファベットと数字の組み合わせ(アルファベットも数字もどちらもある)とするには
どうしたら良いでしょうか?
0016nobodyさん
2013/02/13(水) 23:30:20.10ID:???数字英字 もしくは 英字数字という並びが存在する英数字8文字以上
0017nobodyさん
2013/02/14(木) 00:13:02.40ID:???>>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.
おもしろかった。
0019nobodyさん
2013/03/09(土) 22:12:30.87ID:???はダメ?
0020nobodyさん
2013/03/09(土) 23:24:50.86ID:???0021nobodyさん
2013/03/10(日) 23:50:57.56ID:???大文字と小文字を区別したいってことなら
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]{8,}$
でおk
0022nobodyさん
2013/03/18(月) 20:02:10.97ID:XSCUuGgihttp://www.rider-n.sakura.ne.jp/regexp/regexp.php
で試す限りはうまくいくんだけどPHP上でうまくいかない。
スクリプト SJIS
マッチング文字列 SJIS
PHP内部文字エンコ SJIS
の環境下で
【サッカー】xxxxx【野球】
で最初のサッカーだけをマッチングしたいので
/^【([^】])】/i
としているんだけど、サッカーの時はマッチしない。
【テニス】xxxxx【卓球】ならちゃんとテニスがマッチする。
なんで?(´・ω・`)
0023nobodyさん
2013/03/18(月) 20:21:31.67ID:???それだとテニスもマッチしないはずだが
[^】] は「 】」以外の1文字ってことになる
それとShift_JISなんて捨ててUTF-8使おうぜ
0024nobodyさん
2013/03/18(月) 22:12:52.90ID:XSCUuGgiすません、[^】]+です。
SJISで何とか…
0025nobodyさん
2013/03/19(火) 00:22:00.75ID:???mb_ereg ("^【([^】]+)】" ,$txt,$ret);
pregはSJIS使えません
0027nobodyさん
2013/05/16(木) 11:13:37.06ID:???/^(?:(?:http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)*$/
上記はURLをチェックする簡単な正規表現だと思うのですが
そのURLがRSSかどうかチェックする正規表現にしたいのです
RSSの拡張子は .rss .rdf .xml です。
URLの最後の拡張子にこの文字列が入ってるかチェック出来るようにしたいのですが
どうすればいいでしょうか?
お願いします。
0028nobodyさん
2013/05/16(木) 11:28:59.91ID:???\.(rss|rdf|xml)$/
0029nobodyさん
2013/05/16(木) 11:38:31.44ID:???レスありがとうございます
ただこれに差し替えるだけだと
http://www.example.com/.rss
これも正常として判断されてしまうのですがどうしたら良いでしょうか?
よろしくお願いします。
0030nobodyさん
2013/05/16(木) 11:47:36.80ID:???0032nobodyさん
2013/07/20(土) NY:AN:NY.ANID:75R8ikZF<a href="http://www.test.jp/" title="test"><img src="test.png" alt="ALT" title="TITLE" /></a>
上記のようなHTMLを正規表現でヒットさせ、
<li>TITLE</li>
に変換させたいのですが、正規表現ではどう表したらいいのでしょうか?
0033nobodyさん
2013/07/21(日) NY:AN:NY.ANID:???0034nobodyさん
2013/07/25(木) NY:AN:NY.ANID:2TH+2Iiw"ver.2 test.Test"という文字列を"ver.2 test. Test"のように
ピリオドの次の文字が大文字のときに限り半角スペースを挿入したいのですが
良い方法はないでしょうか?
0036nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???0038nobodyさん
2013/09/06(金) 20:12:17.12ID:???見ての通り超手抜きだけど例の通りか属性値のダブルクォートが無いぐらいならこれで大丈夫
検索文字列: /^(.+<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);
0039nobodyさん
2013/09/14(土) 18:05:14.35ID:0qKO1mtdPHP5で
preg_match ("/.*'.*/s", $_POST["value"])
としたときにvalueに「'」があってもマッチしない場合があるらしいのですがどういう文字列の場合でしょうか?
preg_matchはPCRE関数でPerl互換です。マルチバイトに対応していないのでその辺りに落し穴があるのかなと思うのですが。
0040nobodyさん
2013/09/14(土) 19:42:16.21ID:QgtFjJm6NGワードフィルターが正規表現なのですが教えて頂けないでしょうか。
"韓国"というキーワードをフィルタリングしたいです。
http://userscripts.org/scripts/show/172085
0041nobodyさん
2013/09/15(日) 10:40:22.03ID:???マッチしない場合があるとは思えないけど、一応マッチしない場合があると言った人に聞いてみれば?
まぁ、$_POST["value"]が送信されて来なければ話は別だけど・・
ちなみにそれは preg_match("/'/", $_POST["value"]) のようにシンプルに書くこともできる
0043nobodyさん
2013/09/15(日) 15:21:48.42ID:???2chMate 0.8.5.6 dev/HTC/HTL21/4.1.1
2chMate 0.8.5.4/SHARP/SBM003SH/2.3.4
↑こんなやつです
一応専ブラはjanestyleということでどなたか教えていただけませんでしょうか
0044nobodyさん
2013/09/16(月) 04:52:23.59ID:V1KLg8Lz004539
2013/09/16(月) 18:13:41.90ID:???マッチしない場合は無いようでした。
phpの設定の問題でpreg_matchがマッチできずfalseを返す場合があるらしいです。
0046nobodyさん
2013/09/19(木) 16:03:12.92ID:XGTpu0pg最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが
最近2ちゃんで同じ文字列を数行繰り返す荒らしがいますが
↑こんな感じです
改行を挟まない場合もあります
Janeでこれをあぼーんしたいんですが
同じ文字列が数行続いたかを調べられる正規表現はありませんか
0047nobodyさん
2013/09/19(木) 19:40:04.05ID:???1行文の2連投
http://thinkarc.blogspot.jp/2007/07/janeviewngex.html#NGEx_Contiguous_single-line
んでこれ以上は下で NGEx.txtを晒すスレ4
http://mattari.plusvip.jp/test/read.cgi/jane2ch/1325934427
0049nobodyさん
2013/09/22(日) 00:52:59.03ID:PBzP1rLUNN\s.*?VBNでうまくいかない(最長マッチが返ってくる)のですが、何が悪いのでしょうか?
In_IN Israel_NNP ,_, freedom_NN of_IN opinion_NN and_CC risk_NN taking_NN are_VBP strongly_RB supported_VBN ._.
0050nobodyさん
2013/09/22(日) 02:25:21.73ID:V8cai0+K最短で後続するVBNまでがマッチする
こうじゃないか?
.*(NN\s.*?VBN)
005149
2013/09/22(日) 08:30:46.88ID:???ありがとうございます。
しかし、、、.*(NN\s.*?VBN) だと、今度は、行全体がマッチしてしまいます。。。
ムムム
005349
2013/09/22(日) 15:17:49.08ID:???>>52
ありがとうござしました。
プログラム板でも聞いてみたところ、下のような表現を教えてもらいました。
NN\s((?!NN).)*?VBN
0055nobodyさん
2013/09/23(月) 15:50:05.13ID:???webprog板の面汚しめ
0056nobodyさん
2013/09/23(月) 21:29:41.29ID:???0057nobodyさん
2013/09/23(月) 21:37:40.88ID:???0059nobodyさん
2013/10/07(月) 05:09:32.74ID:???'hoge山田
太郎2様hoge'
(2の数字は色々変わります)
の中から'太郎2様'をマッチさせたいのですが
/山田[\s\S]*?(/太郎.*?様/u)様/u
でうまくいかないです。どなたか教えて下さいまし。。。
0060nobodyさん
2013/10/07(月) 15:52:08.10ID:???0062nobodyさん
2013/10/09(水) 23:36:54.74ID:???([a-z0-9]){9}$
$(([a-z0-9]){9})
と思ったのですが、うまくいかないです。
0063nobodyさん
2013/10/10(木) 10:38:47.00ID:???0064nobodyさん
2013/10/10(木) 11:09:37.77ID:???0065nobodyさん
2013/10/31(木) 18:34:38.76ID:GYE7WPbHとある時
(.*?)
で"(cd)"は返ってきますが、
"cd" とカッコの中身だけを取りたい時はどうすればいいでしょうか
"(" と ")" を置換するしかないですか?
0066nobodyさん
2013/10/31(木) 18:49:48.33ID:???0067nobodyさん
2013/10/31(木) 21:18:35.06ID:odoD21Ul0068nobodyさん
2013/11/29(金) 11:12:23.82ID:???パターンは、/<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>は独自タグで間に入る文字列長、フォーマットは不定です。
どうすれば期待通りの振る舞いに出来るでしょうか?
0069nobodyさん
2013/11/29(金) 11:36:29.05ID:???すみません。訂正します。
× preg_match('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)
○ preg_match_all('/<a>.*<\/a>/', '<a>テスト1</a><a>テスト2</a>', $result)
0070nobodyさん
2013/11/30(土) 00:49:11.30ID:ykQSlGiP0071nobodyさん
2013/11/30(土) 23:20:57.87ID:???0072nobodyさん
2013/12/04(水) 06:52:39.64ID:???お題が欲しけりゃJaneのReplaceStr.txtとかNGEx.txtとか自分でいじってみればいいんじゃないの?
練習はReplaceStr Toolでやれるから。
グループ化を使って解析させると幾分わかりやすくなる。
0073nobodyさん
2013/12/08(日) 20:14:52.93ID:1LHzvpJQテーブルタグで囲っている、下記のような
HTMLの表があります。
名前 | ふなっしー
住所 | 東京都港区赤坂
電話番号 | 090-0000-0000
ふなっしー
東京都港区赤坂
090-0000-0000
という結果を期待して
名前(.*)
住所(.*)
電話番号(.*)
と書いたんですが、使い方を間違っているのか?
うまくいきません。
他の記述方法はないでしょうか?
0074nobodyさん
2013/12/20(金) 03:59:14.24ID:JjVtc12l■本スレ
Regular Expression(正規表現) Part12
http://toro.2ch.net/test/read.cgi/tech/1387257592/
■注意
工作員がわざと重複させて立てた偽スレを本スレだと偽って宣伝に来る可能性があります。
本スレは上記のみですので十分ご注意ください。
0076nobodyさん
2013/12/22(日) 08:24:16.49ID:???これだろ。
ttp://1st.geocities.jp/neeetest/RepStrTool_2.8.zip
0077nobodyさん
2014/01/12(日) 01:41:51.67ID:???保守。・・のついでに私的メモを書いていくかも。
檜山正幸のキマイラ飼育記
http://d.hatena.ne.jp/m-hiyama/20100603/1275546996
0078nobodyさん
2014/01/13(月) 23:30:11.42ID:???http://itpro.nikkeibp.co.jp/article/lecture/20061127/254890/?ST=selfup&P=3
0079nobodyさん
2014/01/15(水) 23:08:02.57ID:???http://www1.adachi.ne.jp/katz/primer/automata.html
会社の新人研修でオートマトンの講義を担当した。
0080nobodyさん
2014/01/16(木) 03:06:09.07ID:???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
※ 全部正規表現に関係するリンクなんで荒らしではないです。
正規表現に関わるオートマトンの知識を付けたい方には参考になると思います。
0081nobodyさん
2014/01/18(土) 22:50:11.07ID:???ttp://www.i.kyushu-u.ac.jp/~takeda/Lectures/.../ComputationTheory01.pdf?
0082nobodyさん
2014/01/19(日) 07:18:17.70ID:???(?:(?!foo).)*
^(?:(?!foo).)*o$ → 「foo」 にマッチ出来ない。
先読みを使わない正規表現ならマッチ出来る。
→ (?:(?!foo).)* は厳密には間違い。
Q、では先読みを使って正しく動作させるにはどう書くべきか?
0083nobodyさん
2014/01/19(日) 11:23:45.74ID:???だろうが、
こんなの使うくらいなら
if (/foo/) {
} else {
※ここに書いたほうがいいに決まってる
}
で、もはや正規表現使うコストももったいないくらいだから
普通は strpos()みたいな関数使うべきだろう。
0084nobodyさん
2014/01/19(日) 15:12:27.67ID:U6WWS19riオプション必要なら代わりにlc
0085nobodyさん
2014/01/19(日) 15:26:00.19ID:???0086nobodyさん
2014/01/19(日) 17:13:11.44ID:???>>82の内容を理解出来てないね・・
(?:(?!foo).)* → fo にマッチ
o$ → o にマッチ
これ足して foo にマッチ「する」のが期待する文字列否定の動作。
fo の中に foo は含まれていないので fo にはマッチしなければならない。
>関数使うべき
マラソン選手に車使うべきって言ってるようなもん。
0087nobodyさん
2014/01/21(火) 04:23:32.47ID:???Perl正規表現雑技 - ある文字列を含まないものにマッチする正規表現
http://www.din.or.jp/~ohzaki/regex.htm#Without
0088nobodyさん
2014/01/24(金) 01:21:47.01ID:???既に文字列否定の正規表現を簡単に作れるようになってしまった。
チャリの運転と同じで、一旦出来るようになるとなんてことないね。
0089nobodyさん
2014/01/24(金) 05:08:57.49ID:???abc かつ def を含まない文字列を表す正規表現を作れ。ただし先読みはNG。
0090nobodyさん
2014/01/25(土) 14:00:24.10ID:peRg4Ln+言語は Java(Android開発) です。
やりたいことは、
・'a', 'b', 'c', '*' の4つの文字が使われた文字列を分割する
・'a*', 'b*', 'c*' は1文字として扱い、'*'のみの物は無い
になります。
例えば "aba*cb*" の場合は
a
b
a*
c
b*
に分割したいです。
どのように書けば良いのでしょうか、ご教授願います。
0091nobodyさん
2014/01/25(土) 17:37:15.39ID:VUYYCfMh0092nobodyさん
2014/01/26(日) 00:17:59.26ID:???糞質問・キチガイは↓こちらにお願いします。
Regular Expression(正規表現) Part12
http://toro.2ch.net/test/read.cgi/tech/1387257592/
009390
2014/01/26(日) 13:40:59.38ID:???ありがとうございました。勉強になります。
>>92
>>1も読めない糞は2chには向いていないと思うよ。
もう何十年も居座っていると予想されるが、そろそろ自覚しなよ。
0094nobodyさん
2014/01/26(日) 23:09:13.31ID:???わざわざ煽りにム板まで出張してきてるし。
0095nobodyさん
2014/01/27(月) 00:48:44.89ID:???0096nobodyさん
2014/01/27(月) 05:05:55.59ID:???http://d.hatena.ne.jp/junjun777/20110927/regexp_not_include
おや、あわわさんとやらが俺の代わりに知らせに行ってくれてたのか。
あわわさん乙。ありがとう。
正規表現 Part11
http://toro.2ch.net/test/read.cgi/tech/1363769640/337
ってあれ?あわわさんのほうが6時間早い。CPU時計の時差?
0097nobodyさん
2014/01/29(水) 03:59:46.05ID:???0098nobodyさん
2014/01/29(水) 04:05:21.14ID:???ただのクソスレ
0099nobodyさん
2014/01/29(水) 05:11:24.62ID:???■ このスレッドは過去ログ倉庫に格納されています