1 名前:デフォルトの名無しさん [2007/08/02(木) 13:53:20 ] 正規表現(Regular Expression)スレです。 質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。
116 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 14:07:57 ] >>113 自分のこと言われてると気付いてないみたいよ。
117 名前:デフォルトの名無しさん [2007/08/26(日) 18:43:44 ] 環境は秀丸です 「前の行末がピリオド&行末がピリオドでない行」 の前後に空行を入れたいのですが、どう書けばいいのか教えてください Hoge hoge. Moge moge. Title Hoge hoge. Moge moge. を下のようにしたいのです。 Hoge hoge. Moge moge. Title Hoge hoge. Moge moge. ([^\n]*)[^\.]\n ⇒ \n\n\1\n\n とか考えてみたけどダメですた
118 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 19:19:40 ] これでどう? ^(.*[^.])$
119 名前:デフォルトの名無しさん [2007/08/26(日) 19:21:22 ] >>117 やる気あるのか? バカは諦めなさい。
120 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 19:34:09 ] >>117 ↓スマートじゃないけど。 検索文字列: \.\f\n.*[^.]\n\f 置換文字列: .\n\1\n
121 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 19:43:28 ] >>120 サンクス ばっちりでした >>118 なんか秀丸って行頭行末をまたぐときとかって、$^とかうまく反応して くれないんですよね >>120 でいけました 118もありがとう
122 名前:118 mailto:sage [2007/08/26(日) 19:51:27 ] 自分のは完全な誤答だったよ(´・ω・`)出直してきます
123 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 20:00:21 ] > ^(.*[^.])$ 顔文字っぽく見える
124 名前:デフォルトの名無しさん [2007/08/26(日) 22:09:35 ] 基地害じゃね?
125 名前:デフォルトの名無しさん [2007/08/27(月) 12:32:15 ] JavaScriptでの「?:」の意味を教えてください。解説サイトでも可です。 よろしくお願いします。
126 名前:デフォルトの名無しさん [2007/08/27(月) 13:19:04 ] なんでこう、混乱する訳ばかりなんだろうな。 正規表現というのは、例えば 「円周率は3.13」 という誤りを 「円周率は3.14」 と、正しく書くこと。
127 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 13:30:30 ] 正則表現とでも呼んでおけ
128 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 15:40:01 ] >>125 キャプチャなしの括弧 ttp://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp
129 名前:125 mailto:sage [2007/08/27(月) 16:15:47 ] >>128 ありがとうございました。
130 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 17:24:44 ] javascriptかperlなのですが (fire|fighter|future|fusion) と (fi(re|ghter)|fu(ture|sion)) のような場合はどちらが高速でしょうか?
131 名前:87 mailto:sage [2007/08/28(火) 18:21:10 ] 87です。 こちらを見に来るのをすっかり忘れてしまっておりました! 大変申し訳ございませんでした。 >>88 様 HTMLパーサを使うほうが良いとのご忠言、ありがとうございます。 その方向も模索させていただきます。 >>89 ,90様 >>91 様のご指摘通り、HTMLタグのアトリビュートの"'のみを外したいと 考えておりました >>92 ,95様 具体的なサンプルまで作成頂きまことにありがとうございます。 なるべく正規表現のみで実現できないかを模索しておりましたので、 その方法を選択肢から排除しておりました。申し訳ございません。 >>94 様 なるほど、やはり正規表現の1発処理は諦めたほうが良いのですね。 >>97 様 大賛成です。 >>100 様 良いか悪いかは別としまして、モバイルサイトで出力されるHTMLを極力 シェイプアップさせるべく、アトリビュートの囲み文字を一括ではずす ことがしたかったのです。 >>102 様 失礼しました。確かにおっしゃる通りです。申し訳ございません。
132 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:26:41 ] やる気のないやつにはろくな回答が返ってこんわな
133 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:44:15 ] >>130 >(fire|fighter|future|fusion) こんなことするんだったら連想配列つかえよw
134 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:49:22 ] >>130 っ Benchmark
135 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 01:14:58 ] 質問させてください。 「X=\\\\\\\\ho\\,ge\\\\」を 「X=\\ho,ge」にするにはどうすればよいでしょうか? 具体的には「\\\\」を「\」一文字に、「\\,」の場合はカンマのみにしたいのです。 \\{2,4} なんかを思いついて弄ってみたんですが、さっぱりでして……
136 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 01:19:53 ] 単に \\, を , に置換してから、 \\\\ を \ に置換すればいいんでない?
137 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:17:04 ] 正規表現で000000〜ffffffまでかどうかチェックできる表現教えてちょ
138 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:19:52 ] [0-9a-fA-F]{6} でいいかな
139 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:44:00 ] >>137 のルールに加えて、左に0はいくらつんでもOKの書式を許す、 純粋にffffffまでの数字かどうかはこれでいけるかな? (?<![0-9a-f])0*[0-9a-f]{6}(?![0-9a-f])
140 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 07:18:58 ] >>139 6桁というのはチェックしたいです。
141 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 11:13:52 ] オライリーの詳説・正規表現に載っていたHTMLのパターンを 否定(訂正)していたのを別のオライリーの本で見かけたんだけど タイトルを忘れてしまいまして どなたかご存じないでしょうか?
142 名前:デフォルトの名無しさん [2007/09/02(日) 01:16:22 ] 文字列 Aと文字列 Bを両方含んでいて順序もA→Bになっている文字列にマッチする 正規表現を教えてください。 AiiiiiiiiB にはマッチして欲しい BiiiiiiiiA にはマッチして欲しくない
143 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 02:06:35 ] A.*B で何か問題が?
144 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 08:37:32 ] >>142 AiBiAiB BiAiBiA は、マッチするの、しないの?
145 名前:デフォルトの名無しさん [2007/09/02(日) 18:40:31 ] Berryの設定で正規表現を使いたいのですが 「list.php?table=moe&page=1」の最後の値が1〜9999まで マッチするような正規表現を教えていただけませんか? 正規表現むずかしい><
146 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 19:03:51 ] list\.php\?table=moe&page=([1-9][0-9]{0,3})$ 適当
147 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 19:12:57 ] >>146 うわーどうもありがとう。 正規表現って便利そうだけど難しくてなかなか^^;
148 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 18:31:09 ] VBSで正規表現を使ってます。 URLの相対パスを正規表現でマッチさせようとしているのですが 「../」と「./」の区別が付きません。どのようにして区別させたらよいのでしょうか?
149 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 18:54:01 ] どっちも相対パスだと思うが
150 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 18:58:25 ] 説明が悪くて申し訳ないです 例えば「../././abc.html」の様なURLがあったとして 「./」のをマッチさせるのに「\./」とすると「../」にもマッチしてしまうので 「./」だけにマッチさせるにはどうしたらいいのかな?と思いまして…
151 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 19:16:23 ] (/|^)\./
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)/ とか?