1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
152 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 19:22:56 ] ありがとうございます。できました! 時間を取ってそのパターンの意味を調べさせてもらいます
153 名前:デフォルトの名無しさん [2007/09/06(木) 17:40:38 ] 顔文字に見えてしょうがねえ
154 名前:デフォルトの名無しさん [2007/09/09(日) 00:58:20 ] 正規表現があるという事は偽物表現もあるということに他ならないわけですが どこさありますか。
155 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 01:03:36 ] irregular expression?
156 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 10:45:48 ] 文字列が全て0かどうかは ^0+* でよいでしょうか?
157 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 11:45:24 ] ^0+$ じゃないのかな
158 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 11:59:33 ] >>157 ありがとうございます!
159 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 11:40:36 ] スレタイに●が三つ以上入ってるスレを消したいたいんだが 全然消えない…この式じゃ間違ってる? ●{1}.*●{1}.*●{1} ちなみに消したいのはこのスレ ttp://pc11.2ch.net/test/read.cgi/jisaku/1189612206/
160 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 11:44:31 ] {1}って入れる意味あるのか?
161 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 12:05:29 ] てか正規表現で●って使えないっぽいな… グーグルでも●の検索結果ゼロだしどうしたものやら
162 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 12:25:52 ] そんなバナナ
163 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 13:34:57 ] >>159 前方一致ならそれでもいいはずだが、完全一致なら最後にもう一組 ".*" が必要。
164 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 14:21:58 ] >>161 使えるかどうかは、ライブラリおよび環境設定による。
165 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 18:54:07 ] やっぱり●*ですら反応しないな…レスサンクス ブラウザのほうのスレで聞いて来るわ >159は撤回ってことで
166 名前:デフォルトの名無しさん [2007/09/14(金) 19:25:12 ] .*●.*●.*●.* こうじゃねーの
167 名前:デフォルトの名無しさん [2007/09/14(金) 22:07:35 ] >>6 格好悪い顔文字作るなハゲ
168 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 08:05:30 ] (●.*){3,} とかでいいんじゃないすか(^ω^;)
169 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 00:30:09 ] (.*●.*){3,} ちょっとかわゆい
170 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 08:47:49 ] Perlで、Cのコメント除去プログラム $text = join ('',<>); $text = ~S { (".*?")|(/\*(.|\n)*?\*/)|(//[^\n]*) }{$1}gx; print $text;
171 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 13:04:12 ] phpで文字列の中のすべての4ケタの数字にマッチする 正規表現を試してます。 が、以下のスクリプトを動かしても"1234"がマッチしません。 なにかうまい方法ありませんでしょう。 //期待する結果 0000 1234 8888 9999 $str = "aaa 0000 1234 12345 1111 hoge 4545456465 9999"; $c = preg_match_all("/^[0-9]{4,}|\s[0-9]{3,4}\s|[0-9]{4,}$/",$str,$m); echo $c."個マッチ<br>\r"; foreach ($m[0] as $k => $t){ echo "<br>\$m[0][$k] => $t\r"; $i++; }
172 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:53:23 ] /(?<=\s)([0-9]{4})([^0-9a-z]?)/ なんとなーくという感じになってきたんですが…、もう少し何かorz
173 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 22:49:11 ] 解決しました ! /\b[0-9]{4}\b/ //4ケタの数字にマッチ でいけますた、スレ汚しスマソ。
174 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 23:22:56 ] JaneViewのNGExで悩んでいるのですが A A B A B A 東京 埼玉 東京 埼玉 東京 埼玉 埼玉 千葉 埼玉 のように ((仙台|東京|名古屋).*大阪.*\2)|((仙台|東京|大阪).*名古屋.*\4)
175 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 23:37:37 ] すみません書きかけで送信してしまいました。 JaneViewのNGExで悩んでいるのですが A,B,C,D…といったリストがあったとして、 A A C D D B のように間に入らなければ検出されずに A B A B C B C A B C のようにリストの要素"AとA"や"BとB"の間に、別の要素が入っている場合を検出したいので ((A|B|C).*D.*\2)|((A|B|D).*C.*\4) といった感じでやっています。 リストの要素が少なければ | でつないでいけばいいのですが、リストが多いととんでもない状態になりますよね。 どうすればこれをもっとスマートな表記にできるでしょうか?
176 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 21:16:09 ] (A|B|C|D)\s+((?!\1).)+\s+\1 とか?俺のJaneではヒットした。・・・一体何に使うのか気になる。
177 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:38:11 ] ありがとうございます。 (?!\1)でできました。 アニメサロンの延長情報確定スレに貼られている表で 邪魔な表を貼り付けられるのをあぼーんしたかったんだ。
178 名前:デフォルトの名無しさん [2007/09/28(金) 11:42:54 ] 正規表現で比較関数のようなことはできますか?
179 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 11:45:35 ] もっと具体的に
180 名前:デフォルトの名無しさん [2007/10/03(水) 18:17:05 ] 具体的に書いたらオマエが答えられるのかよ
181 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 18:39:11 ] 答えられるか答えられないか具体的に判断できる
182 名前:デフォルトの名無しさん [2007/10/03(水) 19:52:07 ] メーリングリスト等にもよくあるよね 内容が分かる程度に端折って書くと 「質問の仕方をしらない」等の苦情 具体的且つ詳細に書くと答えられないくせにw
183 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:13:05 ] こういう珍獣ってリアルにはいないんだよなぁ。
184 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:21:48 ] >>178 =180=182 五日経っても回答得られなかった現実をきちんと見据えて、 いい加減諦めて「もっと具体的に」書いた方が良いのでは?
185 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:57:50 ] ん・・・全く意味が分からんからね。
186 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:54:49 ] こういう質問には「できません」と答えるのが大人のマナー。
187 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:25:03 ] >>184 もっと具体的に
188 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 02:24:11 ] もっと愚怠的に
189 名前:デフォルトの名無しさん [2007/10/04(木) 08:37:31 ] hage
190 名前:デフォルトの名無しさん [2007/10/05(金) 00:59:38 ] 528 名前:名無し募集中。。。[] 投稿日:2007/10/05(金) 00:23:13.84 0 PHPの正規表現に詳しいやつがいたら教えてほしい preg_replaceで置換をしたいんだが たとえば /sample/test/14567.jpg というのを /sample/test/backup/14567.jpg というように最後の/を/backup/に置き換えるにはどうしたらいい? いろいろ試してみたが俺のレベルじゃどうにもならんかった
191 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 01:29:35 ] preg_replace('/¥/([^¥/]+)$/', "/backup/$1", "/sample/test/14567.jpg");
192 名前:デフォルトの名無しさん [2007/10/05(金) 16:25:45 ] 知ったかぶり
193 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:30:53 ] >>190 pathinfo使えば?
194 名前:デフォルトの名無しさん [2007/10/06(土) 10:35:59 ] 余計なお世話
195 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:47:06 ] 珍獣増えすぎwwwwwwwwwテラカオスwwwwwwww
196 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:56:30 ] [あはばば, ばばばば], あばばばば, あば, [あばばば, ば, ばばばばはば, ばば] というような文字列があったとき、 [あはばば, ばばばば] あばばばば あば [あばばば, ば, ばばばばはば, ばば] と分割したいのですが、どのようにしたらいいでしょうか? (\\[?.*\\]?),とかやってみたのですが全然だめでした orz なかのあばば〜は変化します。
197 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:57:28 ] >>196 まずは >>1 を見てみて。
198 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:00:39 ] >>197 すいません、.NETのSystem.Text.RegularExpressionsのRegex.Split()で置換しています。
199 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:10:25 ] >>198 すいません、置換じゃなくて分割でした orz
200 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 01:56:00 ] >>196 まず、[あば,ばばば] を うんこっこー に痴漢する (うんこっこー に痴漢した文字列は堆肥しておく) うんこっこー, あばばばば, あば, うんこっこー となるので、これを分割する。そのあと、 うんこっこー を堆肥しておいた文字列に戻す。
201 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 04:37:56 ] 逆に、 "," をうんこっこーに置換しても良いかもね。 Perl ですまんけどこんな感じで。 $str =~ s/(\[[^]]+\]|[^,]+)(?:(,\s*)|$)/\1うんこっこー/g; $ary = split(/うんこっこー/, $str);
202 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 12:19:13 ] Perl 5.8.8を使っています。 文字列の先頭からある文字列(たとえばXYZ)の直前までを削除する、 ただしその文字列XYZがこない場合はすべてを削除する正規表現は どう記述したらよいでしょうか。 たとえば (1) abcXYdefXYZ123 なら abcXYdef のみを削除する (2) abcXYdef なら abcXYdef すべてを削除する ということです。 s/^.*(XYZ)?/$1/; とすると(1),(2)ともすべてが削除されてしまい、 s/^.*?(XYZ)?/$1/; とすると(1),(2)とも1文字も削除されません。 s/^.*?XYZ// || s/^.*//; とすれば(1),(2)ともうまくいきますが、 できれば1個の正規表現で実現させたいです。
203 名前:デフォルトの名無しさん [2007/10/07(日) 13:02:54 ] s/^abcXYdef//;
204 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 13:19:38 ] ちゃんと動くんなら、自分の能力で到達可能な範囲のプログラムで十分だと思うよw s/^((?!XYZ).)*//
205 名前:デフォルトの名無しさん [2007/10/07(日) 13:27:33 ] s/(^.*?XYZ|^.*)//;
206 名前:デフォルトの名無しさん [2007/10/07(日) 13:30:59 ] s/^.*?XYZ|^.*//;
207 名前:デフォルトの名無しさん [2007/10/07(日) 13:32:25 ] > s/^.*?XYZ// || s/^.*//; > とすれば(1),(2)ともうまくいきますが、 ウソつけ!
208 名前:202 mailto:sage [2007/10/07(日) 15:49:43 ] 短時間にたくさんのレスが!ありがとうございます。 >>204 (?!pattern) が使えるんじゃないかと思って 質問前にPerlのマニュアルを読んだんですがうまくいきませんでした。 なるほど、こうすればうまくいくんですね。 >>207 s/^.*?XYZ/XYZ/ || s/^.*//; の間違いでした。失礼しました。 >>205-206 ということで、元の質問が間違ってたので間違いです。 試行錯誤の末、 s/^(.*(?=XYZ)|.*)//; という別解を見つけました。
209 名前:デフォルトの名無しさん [2007/10/07(日) 20:10:50 ] PHP5のpreg_matchで、 涼子、愛、美姫以外の文字列が来た場合を検知したいんですが。 涼子、愛、美姫のどれかを検知する場合、 pattern = '/涼子|愛|美姫/'; ですが、涼子、愛、美姫以外を検知するにはどう書いたらいいですか?
210 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 20:13:06 ] そのパターンにマッチしないことを確認すればよい。
211 名前:209 [2007/10/07(日) 20:21:07 ] >>210 すみません。 涼子、愛、美姫以外を含む文字列です。 たとえば、涼子愛子美紀が来たばあい、 「子」が紛れ込んでることを検知したいのですが。
212 名前:209 [2007/10/07(日) 20:36:57 ] >>211 '/^涼子|^愛|^美姫/';
213 名前:209 [2007/10/07(日) 20:38:53 ] >>212 すみません。途中でした。 '/^涼子|^愛|^美姫/'; だと涼子、愛、美紀も全部ひっかかってしまいます。 それだけを含んで、それ以外の文字列を全然含まないようにしたいのですが。
214 名前:デフォルトの名無しさん [2007/10/07(日) 20:55:01 ] 同じくphp5のpreg_matchですが、 半角または全角の数字から始まるはどう書きますか?
215 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 21:39:55 ] >>213 /^(?:涼子|愛|美姫)*$/ とか?
216 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 21:40:46 ] >>214 /^(?:\d|1|2|3|4|5|6|7|8|9|0)/ とか?
217 名前:デフォルトの名無しさん [2007/10/08(月) 00:15:19 ] $string = '涼子愛子美紀'; $result = preg_replace( '/涼子|愛|美姫/', '', $string); echo 'おまんこ';
218 名前:デフォルトの名無しさん [2007/10/08(月) 13:51:27 ] >>215-216 ありがとうございました。 >>217 氏ね!
219 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 17:38:51 ] NFAを機械的にDFAに変換する方法を教えてください。
220 名前:デフォルトの名無しさん [2007/10/08(月) 20:14:07 ] そんなもん無い! って答えでFA?
221 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2007/10/19(金) 03:35:03 ] Aho-Corasick改とかでいいと思うが。
222 名前:デフォルトの名無しさん [2007/10/25(木) 17:50:49 ] phpなんですが、*.example.*/ にマッチさせたいと思ってます。 2つめの*の部分で、comやjp等にマッチさせたいのですが、 http:\/\/(.+\.)?example\..+/では、 www.example.hoge.com/ なんかもマッチしてしまいます。 http:\/\/(+\.)?example\.(com|jp)/とかにすると、 新しいドメインがでてきたときに対応できません。 何かよい方法ありませんでしょうか?
223 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:33:14 ] >>222 「新しいドメイン」ってのはどんなところまでを想定してる?
224 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:49:54 ] 簡易なのでよければ \..+ じゃなくて \.[^/.]+ にするとか
225 名前:デフォルトの名無しさん [2007/10/25(木) 19:51:52 ] http:\/\/(+\.)?example\.[^.]+\/
226 名前:デフォルトの名無しさん [2007/10/27(土) 16:43:32 ] /\/\/\/\/\//\/\/\/\/\/\/\FUCKINTOSH?_*+*}+}`+`%$W`}!LT`LA<VR`AKVAREGERGA"#%IW$%U&'I<{)'(<O'T(*O> 最近、こうして何の作意もなく打ったものが正則表現に見えてどうしようもない
227 名前:デフォルトの名無しさん [2007/11/08(木) 00:14:41 ] 最初と最後は"/"であり、 その間に"/../"や"/./"が発生しない文字列を 正規表現では記述できますか? [×] /etc/../usr/./local/ /../ /./ [○] /etc/sysconfig/ /abc/.aaaa/
228 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 05:41:48 ] >>227 正規表現で一気に行うんじゃなくて、 "/" で分割して、各パーツがドットだけで構成されていたらハネる、とか (ディレクトリトラバーサル対策ならよく調べたほうがいいかも)
229 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 08:45:57 ] ありがとうございます。 xmlのxsd:patternで書きたかったのですが、だめそうです。考え直してみます。
230 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:40:57 ] >>227 これでどうかな。 ^/(([^/.][^/]*|\.[^/.][^/]*|\.\.[^/]+)/)*$ 汚染チェックに使うなら>>228 の言うようにした方がいいな。
231 名前:デフォルトの名無しさん [2007/11/11(日) 17:33:05 ] webでの絵文字表示に苦戦しているのですが、 BAD+[SJISコード]を正規表現で表すにはどう書いたらいいですか?
232 名前:デフォルトの名無しさん [2007/11/11(日) 17:34:32 ] 書き忘れていました。言語はPHPで、バージョンは4.4.1です。
233 名前:デフォルトの名無しさん [2007/11/11(日) 23:06:58 ] ぐ・ぐ・れ
234 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:47:19 ] うん、ググれば全て解決するからこのスレ潰すべきだね。
235 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:52:31 ] aho
236 名前:デフォルトの名無しさん [2007/11/12(月) 00:15:22 ] ワロタwwwwwww
237 名前:デフォルトの名無しさん [2007/11/12(月) 01:18:32 ] いや、ググって該当するページを見たんですけど、正規表現の構成の仕方がわからなくて、 ここに書き込みました。 調べるだけ調べたんですけど、やはりだめでしょうか
238 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:42:05 ] だめです
239 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 04:32:21 ] なんだこいつら 本当はできないんじゃねーの?
240 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:32:04 ] >>239 お、やっと気づいたようだね。それじゃあバイバーイ!
241 名前:デフォルトの名無しさん [2007/11/12(月) 19:50:58 ] 質問です。正規表現でconsumeするというのは日本語でいうとどういうことですか?
242 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:59:53 ] 文字を消費するということ。
243 名前:241 [2007/11/12(月) 21:10:47 ] >>242 ありがとうございます。「文字を消費する」とはどういうことでしょうか? イメージが湧きません。
244 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:24:56 ] 正規表現 /..c/ を "abc" にマッチさせたときを考えると、 最初の /./ は "a" にマッチして消費する。 すると、なんと言うかテキストエディタのカーソルが一つ進むのをイメージしてくれたらよいか、 二個目の /./ が "b" にマッチできるようになる。
245 名前:デフォルトの名無しさん [2007/11/12(月) 22:30:07 ] テキストエディタの ed ってのが元になってるからね。 カーソルって例えはナイス!
246 名前:241 [2007/11/12(月) 23:16:33 ] >>244 なるほど、よくわかりました。ありがとうございます。
247 名前:デフォルトの名無しさん [2007/11/15(木) 07:57:08 ] おはようございます。このスレの過去ログってネットにありますか?
248 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 16:55:18 ] あります。
249 名前:デフォルトの名無しさん [2007/11/15(木) 20:14:33 ] アキュムレータの0ビット目って左端?それとも右端?
250 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:58:31 ] >>249 スレ違い。
251 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:29:30 ] >>249 左
252 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:06:19 ] perl互換のFlexible Renamerで置換したいのですが。 (hoge)hoge(hoge).txtを(hoge) hoge(hoge).txtとしたい場合はどう書けばいいのでしょうか。 )の直後にスペースを入れ、拡張子前の)の直後には入れたくないんです。