[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 13:48 / Filesize : 160 KB / Number-of Response : 745
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

正規表現 part4



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)/ とか?






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

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

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