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


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

正規表現 Part5



1 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:07:28 ]
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

前スレ
正規表現 Part4
pc11.2ch.net/test/read.cgi/tech/1186030400/

116 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 01:32:20 ]
すいません、渋谷駅前を歩いている通行人で処女の女性のみを抽出したいんですが
そういう事って可能でしょうか?よろしくお願いします。

117 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 03:04:17 ]
>>116
どう見ても小学生くらいに見えるのなら、先ず大丈夫でしょう。

118 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 03:50:00 ]
>>117
取りこぼしがあっちゃいけないと思うが…

119 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 08:15:27 ]
>>118
それでは先ず、「処女」の定義をはっきりさせてください。
定義がはっきりしたら、対処してご覧に入れます。

120 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 08:44:04 ]
週刊宝石かよ。

121 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 15:30:43 ]
(?<!非)処女

122 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:29:00 ]
{{ABC}}こんちわ{{XYZ}}

これの{{ABC}}と{{XYZ}}にマッチさせる表現を教えて下さい。
{{.*}}だと全体がマッチしちゃって・・・お願いします。


123 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:30:38 ]
おまいの正規表現エンジンの非欲張り型マッチについて調べれ

124 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:59:17 ]
{{{ABC}}} の場合はどこまでマッチしたいんだろうとか思うが、
とりあえず {{[^}]*}} でもいいかもねー。




125 名前:122 mailto:sage [2008/07/17(木) 19:10:27 ]
>>123
ヒントありがとうございます。
>>124
おおっ!

秀丸の強調表示で使おうと思ってました。
で、自分なりに
{{[a-z^A-Z^0-9^ ^$^/^=^+^%^#^\-^_^!^.^,^&^\(^\)^;^:^\"^\'^\?^亜-K^ァ-ヶ^ぁ-ん^0-9^a-z^A-Z^`]*}}
とかやったらよさげだったんですが、>>124でおkですね

本当にありがとうございました。


126 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:02:42 ]
>>125
頑張りすぎ

127 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:55:24 ]
亜-K ってどういう範囲だっけ?
SJIS?

128 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:28:49 ]
Windows-31Jかな。黒の旧字もあるし。
Unicodeだと破綻しちゃうな。
[:alpha:]みたいな感じで、仮名や漢字を指定する構文があればイイのに。

129 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:13:43 ]
16区から92区までの漢字のようだね

>>128
Unicodeだと、その範囲の漢字はCJK UNIFIED IDEOGRAPHと
CJK COMPATIBILITY IDEOGRAPHに入るんで、Unicodeのカテゴリやブロック名に
対応している正規表現エンジンなら、それを使うのが普通だと思う

そうでないなら、直接コードポイントを用いてU+4E00-U+9FBFとU+F900-U+FAFFで
指定すればいいんじゃないかな

130 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:18:47 ]
Javaだと
[\p{InCJKUnifiedIdeographs}\p{InCJKCompatibilityIdeographs}]
XML Schemaだと
[\p{IsCJKUnifiedIdeographs}\p{IsCJKCompatibilityIdeographs}]
かな。


131 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 21:01:19 ]
CGIの正規表現で(月)など()の中に曜日があって
曜日を消したかったので
$date =~ s/\([月火水木金土日]\)//g;
というのでやってみたんですができなかったんですが
どうすればいいでしょうか

132 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 21:05:07 ]
use encoding

133 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 21:07:47 ]
すみませんsjisです

134 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 21:30:15 ]
>>133
おそらく perl スレで聞いたほうがいい質問だな。



135 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 05:04:38 ]
ありがとうございます
perlスレで質問してきます

136 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 17:27:02 ]
教えてください。テレビ番組の検索で「体操」の番組をすべて検索したいのですが、
そのうち「テレビ体操」「みんなの体操。」を除外するにはどのように書けばいいでしょうか?

137 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:22:34 ]
>>136

>>1 を読んでください。


138 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:53:31 ]
>>137
すみません。これです 1st.geocities.jp/tvrock_web/

一般的な話でいいので教えていただけると有り難いのですが。

139 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 19:36:20 ]
含む含まないじゃなくて、完全に一致するのを除外?

^((?!^テレビ体操$|^みんなの体操。$).)*体操.*$

こうかなあ・・・

140 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 19:39:19 ]
環境によっては、最初の括弧のあとに ?# が必要かも

141 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 19:40:15 ]
おっと、?: ね

142 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 21:11:20 ]
(11:22)
このような括弧になっている文字はどうやって指定したらいいんでしょうか?
\([0-9]{1,2}:[0-9]{1,2}\)

こんな感じで試してみたんですがうまくいきませんでした・・・。

143 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 23:55:13 ]
>>142
「(」とマッチさせたいときに「(」と書くか「\(」と書くか「\\(」と書
くかは環境依存なんだ。というわけで >>1 を読んで。



144 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:05:30 ]
半角スペースを指定する方法ってありませんか?



145 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:45:57 ]
/ /

146 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:46:11 ]
>>144
>>1を100回音読しろ。

147 名前:デフォルトの名無しさん [2008/07/24(木) 09:50:39 ]
>>145
/ /
これってどういう指定法なんでしょうか?

148 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:52:30 ]
それでわからんのなら、なおさら自分の環境書けよ

149 名前:デフォルトの名無しさん [2008/07/24(木) 10:03:51 ]
ごめんなさい、一から勉強してきます

150 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 11:32:45 ]
一からじゃねぇよ、零から始めろ。

151 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:13:27 ]
(abc) → abc
([abc]) → abc
[abc(def)hij] → abc(def)hij
[abc(d[ef])hij] → abc(d[ef])hij としたいが、
(ab)(cd) → (ab)(cd) のまま。 ab)(cd  にはしたくない。
([abc)] → ([abc)] のまま。abc にはしたくない。
つまり、「文字列両端にあるかっこが、互いに対応する開き・閉じで限りは削除したい」というとき、
perl 5.8.8 の正規表現で書けますか ?

152 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:35:57 ]
(abc) → abc
([abc]) → a-c
[abc(def)hij] → a-f or h-j or ( or )
[abc(d[ef])hij] → a-f or h-j or ( or ) or [ or ]
(ab)(cd) → (ab)(cd)
([abc)] → 構文エラー

(\[abc)]なら動く

153 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:45:11 ]
ああ紛らわしくてすみません、(abc) などは、正規表現ではなく、処理対象の文字列です。
(abc) → abc は、(abc) が入ったとき、それを abc に置換したい、という意味です。

  【文字列】  → 文字列
  【文字列A】と【文字列B】 → (置換しないでそのまま)
  《簡単な【文字列】》  → 簡単な【文字列】
  【入れ子の《文字列の【中身】は》そのまま】→入れ子の《文字列の【中身】は》そのまま
  【またいでいる《かっこは】そのまま》 →(置換しないでそのまま)

という置換をしたいのです。

154 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:55:46 ]
一番上は\((abc)\)だな

やりたいことは分かったんだが俺には分からないから賢者に任せる

基本外側にある括弧は取り除く
例外として括弧が並んでる or 括弧が入れ子になってる場合は括弧を取り除かない
という感じか



155 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 15:10:52 ]
>>151
pattern code expression (??{ expr }) を使えば再帰的な正規表現を書くことが出来る。

156 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 20:51:34 ]
性器表現で痴漢

157 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 22:50:53 ]
既出

158 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 04:00:55 ]
毎日毎日、暑い。暑い。暑い。暑い。
物価高で肉が食えないからスタミナ無い。
エアコン代もバカにならない。
しかもCPUは温風を吐き出しまくる!
暑い。あ゛〜〜〜っ!もう我慢ならん!
正規表現でなんとかなりませんかねぇ

159 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 16:06:39 ]
htmlソースからcharsetの値(UTF-8とか)を取り出すスマートな正規表現は
どんなものがありますか?

160 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 16:10:35 ]
/\bcharset\s*=\s*("|'|)(.*?)\1/i

161 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 16:11:33 ]
>>160
仕事速いね!
ありがとうございます

162 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 14:13:15 ]
/w{4,}|(っ|ぇ)うぇ/
/うは(w|w){2,}|おk(w|w){2,}/

これに類する内容をマッチさせるのにもっとスマートな方法はないものか。。

163 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 15:06:33 ]
うは[ww]{2,}じゃダメですか

164 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 06:35:43 ]
無限ループになってしまうような正規表現て書けるんですかね?



165 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:18:49 ]
書けても、それを解釈するエンジン側で、よきにはからう。
っつーか /.*/ でも無限ループとは言える。
循環参照?

166 名前:デフォルトの名無しさん [2008/08/24(日) 05:38:57 ]
↓このスレで荒しが酷くてみんな困ってるのですけど
  カレー板限定で見えなくする上手い正規表現は無いでしょうか・・・

お前ら、美味しいレトルトカレーを教えれ! 7袋目
food8.2ch.net/test/read.cgi/curry/1203495304/

167 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:42:18 ]
/(!|[ww]|…)/iでNG

168 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 09:05:20 ]
なんでこうやって荒らし宛てにNGの抜け道を書くんだろうね。
food8.2ch.net/test/read.cgi/curry/1203495304/617

正規表現に特定板限定自動荒らし検知機能はないよ。

169 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 09:20:24 ]
文字列の前後の半角/全角スペースを除去したいのですが、
後ろの部分がうまく除去されません。

^([  ]*)(.*)([  ]*)$

どのようにすればうまく行きますか?




170 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:34:12 ]
真ん中の .* に後ろの全角スペースも含まれるからじゃない?
その記法が使える環境なら、[^ ]* とか?

171 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:34:58 ]
ってこりゃ真ん中の全角スペースで止まるか。

172 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:45:09 ]
*じゃなくて+

173 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:22:09 ]
/^(\s*)(\s*\S*)*(\s*)$/
これで引っ掛けられる?
\sは空白、\Sは非空白ね。
^と$は必要ないかも。

174 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 12:05:02 ]
Javascriptだけどこんな感じでやってるな

function trim(str){ return str.replace(/^[  \t]+|[  \t]+$/g, ""); }




175 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 11:48:35 ]
最近は再帰的にマッチできる正規表現が出てきてるんですね
メールのコメントをみんなどうしてるのかずっと悩んでました

176 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 07:59:25 ]
後方参照は便利だね。

177 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 10:09:57 ]
>>175
形式言語的な意味で「正規(正則)」な言語ではなくなってるけどね

178 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:12:16 ]
前ってどっちですか?
後ろってどっちですか?

179 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 15:32:26 ]
あー、あるあるw
プログラムカウンタが進む方(番地が大きい方)が前っぽいのに、
前方参照っつーと番地が若い方だったり。

180 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 16:19:58 ]
このマップが悪いのかな、マップの赤点が見づらいわ

181 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 16:20:49 ]
誤爆ね

182 名前:デフォルトの名無しさん [2008/08/31(日) 10:38:11 ]
Rubyです
予め文字列を逆にしておき連続する改行の後ろだけにマッチ

/\n(?=(?:\n[^\n]+)+)$/

もっとスマートな方法があれば教えてください

183 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 11:31:48 ]
連続する改行の後ろだけにマッチ
って事なら、リバースする前に
/[^\n]+\n(?=\n+)/
じゃダメなのかな

184 名前:182 mailto:sage [2008/08/31(日) 11:58:23 ]
アホだ〜
ここまで解ってるなら逆にする必要なかった

/^((?:[^\n]+\n)+)\n(.*)$/m

これで\1と\2を取り出せば良いんですよね



185 名前:182 mailto:sage [2008/08/31(日) 12:04:02 ]
>>183
リバース前にそれだと前の改行にマッチしてしまいませんか?

186 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 08:28:15 ]
最小一致の呪文を覚えた

/\A((?:.+?\n)+?)(?:\n(.*))?\z/m

最終的にこうなりました
正規表現奥が深いです

187 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 08:43:01 ]
>>84-85
この範囲[x,y]って表現は何のことですか?java/rubyでもないんですけど・・

188 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:08:18 ]
>>187
数学

189 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:09:23 ]
>>187
[文字の範囲] と
{繰り返し回数} を混同してないか?

190 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:15:43 ]
数学。あーそういうことですか。

 \\s(\\w)
 \\s([\\w])

の違いを調べてるんですが、同じくヒットするんですけど何か違いはあるんでしょうか。
\\w => \wです。

191 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:19:54 ]
ありません

192 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:35:50 ]
あーそーですか。ありがとうございます。

193 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:37:55 ]
数学上の範囲[a,b]は、プログラム的な表現は a..b  や (a..b) じゃないですかね?

194 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 12:48:04 ]
Javaなんですが、強欲な数量子ってのは、欲張り表現ってのでしょうか。
デフォルトでは最長一致なんですが(c+は、c+?ではない方です)、このデフォルト
の挙動 c+ が強欲表現 c++ なんでしょうか?
いまいち c+ と c++ の違いがわからないのですが、何か良いサンプルはないでしょうか。
ちなみに、ネタじゃないですよ




195 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:21:19 ]
>>194
「強欲な数量子」でググれ





"ab" に対して /.+b/ と /.++b/ とか

196 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:29:59 ]
>>194
/c+/と/c++/単独では対した違いはないが、
強欲=「バックトラックしない」だから、後ろに対して影響がある。
たとえば、/c+c/は"ccc"にマッチするが、/c++c/は"ccc"にマッチしない。

197 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:35:38 ]
なんだバックトラックか。
rubyでも廃止予定とか言わず、サポートすればいいのに…

198 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:17:08 ]
c++ってcが2の倍数分だけ得るって事か

199 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 18:21:05 ]
>>194
c+? : non-greedy (正規表現全体がマッチする範囲で最短)
c+ : greedy "貪欲" (正規表現全体がマッチする範囲で最長)
c++ : possessive "強欲" (正規表現全体がマッチしなくなっても、とにかく最長)

200 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:17:26 ]
丁寧にありがとうございます。

201 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:22:59 ]
rubyの(?> )とほぼ等価ですかね。
イマイチ使う場面に遭遇しないんですけど…
どういう整形に必要かわからないんですけど、パタン表現になるぐらいだから、ある程度は需要があるのかなと思います。
これら特殊表現は、サンプルが多く出てくると、表現を理解できて、使える人がたくさん増えてくるのかなと思います。

202 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 04:46:06 ]
タグ処理でよくあるんですけど、

<(.+?)>
<(.+)?>

は何か差があるんでしょうか。

203 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 07:21:56 ]
下は
<> や <abcd>>> みたいなのにもマッチするぞ

204 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:48:19 ]
>>201
正規表現を最適化するのに役立つ。
つまり「バックトラックしても無駄だ」っていうことを表明できる。



205 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:53:47 ]
実装はそうでしょうけど、使う方からすると気にしてませんよ。
そもそもそのバックトラックの違いで速度などの差が出るようなら、regexpライブラリ使わないでしょうし。

206 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:54:59 ]
>>205
お前が気にするか気にしないかは問題じゃない

207 名前:デフォルトの名無しさん [2008/09/04(木) 09:05:39 ]
おまえが気にするかとかよりも、バックトラックで問題が出るなら一般的には誰も使わないんじゃないですかね?
気にしてるのは、あなたの方ですよw

208 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 09:13:57 ]
だから俺は気にするといってるんだが…

209 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:46:12 ]
>>203
おお、そんなところに差があったんですか!感謝です!

210 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 11:01:52 ]
気にするって、まさか自分で実装してるんですか?
c のstring.h程度なら自力で実装できるんですけど・・・

211 名前:デフォルトの名無しさん [2008/09/04(木) 11:36:34 ]
正規表現の記事なんだが
やっと読み終わったぜ
codezine.jp/article/detail/1573

212 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:02:17 ]
バックトラックの量は正規表現を利用するだけの立場でも気にするべきことですよ。


213 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:05:02 ]
ところでそれ、実測しましたか?

214 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:30:14 ]
$unko =~ m!-_-!m;



215 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:20:26 ]
正直怖いです

216 名前:デフォルトの名無しさん [2008/09/15(月) 09:35:05 ]
/\w+/にマッチし
/end/にマッチしない
というのをひとつの正規表現で書くのはどうすればいいですか?







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

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

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