- 1 名前:正規表現 mailto:正規表現 [02/12/06 18:09.net]
- 正規表現
- 252 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 03:38.net]
- >>245
第1版と比較してのレビューきぼんぬ
- 253 名前:名無しさん@お腹いっぱい。 mailto:半額きぼんぬ sage [03/05/25 03:44.net]
- >>249
> 2003年5月発行 -- 5月27日発売 とあるからまだ無理なのでは
- 254 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 03:49.net]
- >>248
正規表現だけでなく、なんかしら言語使ってやればよい。
- 255 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 03:56.net]
- >>248
何故敢えて茨の道を行くのか?
- 256 名前:名無しさん@お腹いっぱい。 [03/05/25 05:07.net]
- >>245
これの第1版買ったのですが、いまいち難しかったです。 もっと易しい本ってないですか?
- 257 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 05:35.net]
- >>253
Ruby の初・中級者なら、「Ruby Magic―Rubyで極める正規表現」はお勧め。
- 258 名前:245 mailto:sage [03/05/25 10:21.net]
- >>249
第1版を持ってないので比較は出来ないっす。 # 買おうと思ったら第2版が出ることを知ったので待ったのだ。 ここに特徴や目次が紹介されているので見てもらうとして ttp://www.oreilly.co.jp/BOOK/regex2/ ttp://www.oreilly.co.jp/BOOK/regex2/contents.htm まえがきから第1版との違いを判断すると - Unicodeのちょっとした解説 - Perl5.003からPerl5.8対応に - Java1.4のjava.util.regexと、その他6つの正規表現パッケージの比較 - .NET framework正規表現の特徴と問題点、M$のドキュメント(貧弱らしい)の補足 のように言語サポートが新しくなった/増えたって感じ。 最初はHTMLのサンプルを少々追加する程度の予定(3ヶ月の見込み)だったみたいだけど、 結局は2年の歳月をかけて全面的に加筆修正することになったそうだ。 難易度は第1版と変わらないのではないかな? # 読み易くなってるのかもしれないけど。。 >>253の期待には応えられないと思う。 > とくに正規表現を使いこなしていると自負している人にほど読んでほしい本です。 という宣伝文句があるくらいだしね。 >>250 いや、24日に買えたのよ。
- 259 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/27 11:05.net]
- 今日発売か。
昼休みに買ってくるか。
- 260 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/27 21:10.net]
- >>256さん、どうですた?
- 261 名前:249 mailto:sage [03/05/27 21:28.net]
- >>255 さんのと、今日立ち読みした感じで、第2版も購入することにしますた。
そういえば、翻訳者 (監訳者) が変わってたんですね。
- 262 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/27 21:29.net]
- sed のタグ付き正規表現についてちょっと教えれ。たとえば、
{________I'm_dreaming_of_a_White_Christmas_} {_Just_like_the_ones_I_used_to_know__} {____Where_the_tree_tops_glisten_} の前後の余計な _ のトリミングをしようと思って sed 's/{\(_*\)\(.*\)\(_*\)}/{\2}/g' とやっても意図した結果にならない。\2 をうまくマッチさせる方法は? まぁこの例なら簡単に逃げられる - たとえば sed 's/{_*/{/;s/_*}/}/' - わけだが、apache の log とかの簡単なパース(並び替えとかそんな程度)を タグ付き正規表現でさくっと処理できれば楽でうれしい。よろしく。
- 263 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/27 21:38.net]
- 二個目の*がlongest matchしようとして
3個目の*にmatchさせたいであろう_まで持っていってしまうのが原因。 sed -e 's/{_*\(.*[^_]\)_*}/\1/'
- 264 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/28 00:59.net]
- '<,'>s@^@//@
- 265 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/28 01:03.net]
- 最少マッチって perl とか ruby にしかない?
sed, grep 等の伝統的 tool にはないの?
- 266 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/28 01:07.net]
- >>262
ないよ
- 267 名前:名無しさん@お腹いっぱい。 [03/05/28 14:45.net]
- >>262
grepに最小一致の機能があったとして それの魅力はイッタイ何なのだろうか?
- 268 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 269 名前:262 mailto:sage [03/05/28 20:42.net]
- 確かに sed では使っても grep では使わないかも。
いや、でも後方参照する時に必要なこともありえますね。
- 270 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/29 10:14.net]
- >>257
昼休みにいきつけの書店にいったが売ってなかったんで。 帰りに別の書店で買った。 でもまだ読んでない… 通勤時間に読むっつーてもあれを毎日持ち歩くのは 重たいしなぁ。
- 271 名前:名無しさん@お腹いっぱい。 [03/05/30 21:59.net]
- 文字列中、丸括弧(全角、半角問わず)で閉じられた部分を取り出す表現を考えているけど、うまくマッチしてくれない。
(丸括弧の中に丸括弧は含まない。Perlの正規表現を使用) $string = '(22(1)'; if($string =~ /[((]([^()()]*)[))]/){ print $1; } else{ print "No match.."; } この場合は"1"がマッチするのを期待しているのだけど、なぜか"22"の部分がマッチした。 OS(UNIX/WinXP)、Perlのバージョン(5.0/5.8)の異なる環境で同じことを確認したけど、結果は変わらず。 さらに、文字コード(Shift-JIS/EUC)の違いでも、結果は変わらなかった。 "1"をマッチさせる別の表現はないですかね? # 全角"("の中にどうも半角")"の文字が隠れてるのかなぁ?(あくまでも推測)
- 272 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/30 22:42.net]
- >>268
おめな、2byte文字と1byte文字が同じに扱われると思ってるらしいな。たぶん、 文系のドキュソだな。しかも、すぐ上で2byte文字コードの話出てたの見てね えな。こいう、初心者質問は、webprogのPerl初心者スレ逝け。
- 273 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/05 14:26.net]
- >>268
Perl5.8.0 + UTF8 でやったら 1 になったよ。
- 274 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/07 12:10.net]
- [ ] のなかに '-' と ']' の両方を入れたい場合はどうすればいいのですか?
- 275 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/07 12:20.net]
- >>271
何で?
- 276 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/07 12:29.net]
- >>271
[]-]
- 277 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/17 23:25.net]
- >>271
!.-[
- 278 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/03 21:13.net]
- 保守
- 279 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/08 11:49.net]
- regexp ml盛り上がってますね。読んでて楽しい。
- 280 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/08 14:02.net]
- このスレはいつからまともな人たちをヲチするようになったのですか?
- 281 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/12 21:26.net]
- すいません、テキストファイルの中の .bananaなどの単語(行頭ではなく)の先頭が
ドットがあるものだけをgrepで抜き出したいのですが、jp.appleのような単語までひっかかって しまい上手く絞り込めません。 アドバイスをお願いします!!
- 282 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/12 21:54.net]
- >>278
\b?\.\w+? で、どうじゃろ?
- 283 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/12 22:44.net]
- >>279
すいません、なんか上手くいかないです。 ls -laでディレクトリ内の全ファイルを表示して、grepで隠しファイルだけを抽出したかったのですが。
- 284 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/12 23:34.net]
- ls -la | grep ' \.'
ではあかんの?
- 285 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/12 23:57.net]
- >>281
行のどこかに"."があれるとヒットしてしまうんです
- 286 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 00:28.net]
- ls -la | grep '^\.'
こういうこと?
- 287 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 00:28.net]
- >>282
とはいえ、"."って、ファイル名にしかでてこないよね? >>281 をよーくみる。
- 288 名前:283 mailto:sage [03/07/13 00:30.net]
- 間違えた。
ls -1a | grep '^\.' これか ls -la | grep ' \.' これだな。下は余計なものを拾う可能性もあるが。
- 289 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 00:31.net]
- ls -d .*
なんてね。
- 290 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 00:32.net]
- あ、正規表現スレだった。すまん。
- 291 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 02:00.net]
- ヤハリココハオモッテタトオリバカバッカリダッタナ(プ
- 292 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 02:57.net]
- ls -la | awk '$9 ~ /^\./{print $0}' はどうよ。
- 293 名前:名無しさん@お腹いっぱい。 [03/07/13 11:30.net]
- >>280 ふつーそういうときは ls つかわず findつかえ。
find ./ -type f -name "\.*" -print
- 294 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/13 14:36.net]
- (())
- 295 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 11:38.net]
- >>290 ふつーそういうときは >> つかわず >> つかえ。
- 296 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 19:04.net]
- backreferenceを前方参照と訳したのはなぜですか?
- 297 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 21:19.net]
- 後方参照としている訳もあるよ。
まぁ、現在の位置よりも前を参照するという意味では 日本語的には前方参照であってると思う。 ようするに「今いる位置より戻って参照」って意味になるんだから。 んでも、意味を考えて訳すなら「戻って参照」とか、どう?
- 298 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 21:32.net]
- >>294
ちょっと前にCスレで話題になったんだけど、Cで「前方参照」といった場合の前方って、 ファイルの終端方向を指す。「ひどい訳語だ」ってことで話は終わったんだけど、 正規表現でも混乱が見られるしなんかいい言葉ないもんかねえ。 日本語では時間を表す文脈で「前」にまるで正反対の意味があるからよくないのだと思う。 「以前」だと過去だし「前進」だと未来だし。 あとこれはすれ違いか? そうだよね。すまん。
- 299 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 21:41.net]
- >>279 >>281 >>283 >>284 >>285 >>286 >>287 >>289 >>290
みなさま、ありがとうございます。 シングルクォーテーションに空白が使えたり、 アッパーチルダとハット(キャレット?)の区別を知ったりと、 正規表現の難しさを知りました。 今、「テキストデータ料理学」っていう古い本を読んでいるのですが、 オライリーの正規表現本は買ったほうがいいですか? (もう2〜3週間前にオライリーのサイトでカタログを注文したのに、 まだ来ない…)
- 300 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 22:23.net]
- おれは初版も新しいのも持ってるけど、自分の知識に自信がないうちは
お薦めしない。もちろんあったらあったで便利だけど。 やっぱり、「俺、正規表現バリバリだぜーYAH」状態で買って読んで 目からうろこ落ちまくり感を堪能するのがいいんではないかと。
- 301 名前:名無しさん@お腹いっぱい。 [03/07/14 23:31.net]
- >294
するってえと、正規表現的には日本語で前方参照あるいは後方参照と書いてあったら どっちもbackreferenceと思えってわけだぁね。 >295 計算機分野だと「前方」という言葉はforwardの訳語というのがあたりめえだと思ってたから、 正規表現関係だと、「前方参照」がbackreferenceのことだっていうのがわかんなくて 難儀したってわけよ。
- 302 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 23:33.net]
- >>297
>>296は学ぶ意欲を持っているから、今のうちに買っておいて損はないと思う。 むしろ薦める。 オイラリーはハズレが少ないからな。
- 303 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/14 23:35.net]
- >>298
俺はperlから入ったから後方参照が当たり前かと思ってた。 他言語使うようになってから吃驚したってわけよ。
- 304 名前:298 mailto:sage [03/07/14 23:43.net]
- perl5の日本語マニュアルで、「前方参照」を "lookahead assertion"の訳語として
使っているやつがあった。 (?=regexp) 長さの無い、前方参照位置指定子。 (?!regexp) 長さの無い、前方参照否定位置指定子。 英語だと (?=pattern) A zero-width positive lookahead assertion. (?!pattern) A zero-width negative lookahead assertion. わけわかんねぇな(w
- 305 名前:298 mailto:sage [03/07/14 23:48.net]
- ありゃりゃ?
(?<=pattern) A zero-width positive lookbehind assertion. (?<!pattern) A zero-width negative lookbehind assertion. "lookbehind assertion" の訳語って何だ?
- 306 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/15 00:32.net]
- 「俺の背後に立つな」
デューク東郷の格言だろ。
- 307 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/15 00:35.net]
- lookahead 見越し
lookbehind 見返り
- 308 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/15 01:01.net]
- 前後不覚だな。
- 309 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/15 03:12.net]
- >>296
>オライリーの正規表現本は買ったほうがいいですか? 持ってなくても覚えられるし、 エディタのサーチとか grep とかで実験しながら 感覚的に慣れるのも悪くないんじゃない? ただし emacs で覚え始めるのはすすめない。 backslash で混乱する。
- 310 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/15 07:21.net]
- >>297
>>299 >>306 ちょっと大きな本屋に行って立ち読みしてみます。 ありがとうございました〜
- 311 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 312 名前:名無しさん@お腹いっぱい。 mailto:age [03/07/17 13:35.net]
- >>308
二度と目を覚ますな。
- 313 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 314 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/20 21:36.net]
- さげ保守
- 315 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/27 22:01.net]
- OOはもうすぐ1.1出るけど、MSWORDよりセキュリティ大丈夫かな?
pc2.2ch.net/test/read.cgi/bsoft/1055292975/392
- 316 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 317 名前:高校生 [03/08/02 17:12.net]
- boo
baa baz っていうテキストが例だとして、sedを用いて、 booまたはbaz、っていう正規表現はどうなるの? rubyやperlならパイプ記号で条件和の表現が出るけど、 同じように書いてもsedに誤解されてしまう。
- 318 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/02 17:52.net]
- >>314 ん? \|使えば良いのでは
- 319 名前:高校生 mailto:sage [03/08/02 18:06.net]
- sed 's/boo\|baa/hoge/g' ./hage.txt
とかだとやっぱりだめなんすよね。 「boo」とかの単語の括り方がよくわからんのです。
- 320 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/02 20:53.net]
- GNU sed 4.0.7版 ではそれでもできてるけどな。
sed 's/\(boo\|baa\)/hoge/g' これでどう?
- 321 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/02 22:07.net]
- >>317
gsedならできるがsedは食ってくれない。
- 322 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/03 01:09.net]
- 単一の正規表現じゃなきゃいかんの?
sedと決まってるなら sed -e 's/boo/hoge/g' -e 's/baa/hoge/g' でいいんちゃう? 置換後の文字列と置換前の文字列の片方とで重なりがある場合 どうするかひとしきりモメたりする ↓↓↓ のがお決まりだな。
- 323 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/03 09:52.net]
- 単一の正規表現でないと記述が冗長で見た目がキモイ、
っていうのはあると思うよ。 おいらはインストール直後のFreeBSDの環境構築をスクリプトに任せたくて、 結局シェルスクリプトにawkな記述を書いて解決した。 カーネルの再構築にしても、/etc/下の記述にしても、要はテキストの置換なわけで。 本当はrubyがFreeBSDの/usr/bin下にあるようなご時世だったら 楽ができるんだけど、そこら辺は個人的な勉強不足だなぁ。
- 324 名前:名無しさん@お腹いっぱい。 [03/08/13 19:13.net]
- {a,b}上の言語Lが
『aaで開始し、かつ、bbを部分列として含む』という条件を満たす語からなるとき Lを表す正規表現ってどうなるの? L=aa(a*b*+bb)* ?
- 325 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 20:45.net]
- L=aa(a+b)*bb(a+b)*
- 326 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 22:05.net]
- >>321
*+ ???
- 327 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 23:05.net]
- >323
'+'より'|'のほうが普通かな。 L=aa(a|b)*bb(a|b)* 本来的には連接、選択、閉包が表現できればいい。
- 328 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 23:08.net]
- L ::= aA
A ::= aB B ::= aB | bC C ::= aB | bD D ::= ε | aD | bD
- 329 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 23:34.net]
- .*
何にでもマッチする最強の正規表現です!
- 330 名前:名無しさん@お腹いっぱい。 [03/08/13 23:50.net]
- >>326
ドットが含まれてなかったらマッチしない罠
- 331 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 23:53.net]
- キター
- 332 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/14 00:13.net]
- ageてるし、ネタと見た。
- 333 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/14 23:29.net]
- >>329
しね!
- 334 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 335 名前:あぼーん mailto:あぼーん [あぼーん.net]
- あぼーん
- 336 名前:名無しさん@お腹いっぱい。 [03/08/28 20:12.net]
- うまづら。
- 337 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/02 03:30.net]
- ほす。
- 338 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/14 04:27.net]
- ☆湯
- 339 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/16 13:49.net]
- [ruby-list:38393] じゃないけど、[a-z] みたいな文字クラスの表現は、
EBCDIC とかだと「意図した通り」には動かないと思うんだけど、 ASCII か ASCII を包含したキャラクタセットという前提で書くべきものなの?
- 340 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/16 14:08.net]
- >>336
[:lower:] とかは使っちゃだめ?
- 341 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/16 15:34.net]
- >>337
あ、いや、質問が悪かったですね。 範囲指定する文字クラスはどうあるべき (書くべき) か?っていう話です。 ていうか、 re_format(7) を私の拙い英語力で読んでみたところ、 ASCII コードの並びを前提とするような文字クラスの範囲指定は、 portable じゃないからやらない方が良い、ということのようですね。 というわけで、極力 >>337 さんのみたいな文字クラス指定を使った方が良い、と。
- 342 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/20 10:41.net]
- ★
- 343 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/08 15:50.net]
- 保守
- 344 名前:名無しさん@お腹いっぱい。 [03/10/12 16:53.net]
- vimで"DEL"という文字列が含む行で、"DEL"以下を削除したい場合はどうしたらいいでしょうか?
- 345 名前:名無しさん@お腹いっぱい。 mailto:sage :s/DEL.*$/ [03/10/12 17:15.net]
- スレ違い。
Vim
- 346 名前:6 Part6
http://pc.2ch.net/test/read.cgi/unix/1058706125/ [] - [ここ壊れてます]
- 347 名前:名無しさん@お腹いっぱい。 [03/10/13 01:12.net]
- :%s/DEL.*//
- 348 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/13 15:10.net]
- >>343
サンクス、すみません。
- 349 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/18 17:51.net]
- ☆
- 350 名前:名無しさん@お腹いっぱい。 [03/10/21 23:12.net]
- >>343
DELは残したい場合はどうすればいいですか?
- 351 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/21 23:24.net]
- :%s/DEL.*/DEL/
- 352 名前:名無しさん@お腹いっぱい。 [03/11/05 11:20.net]
- MS-DOSが使われていた頃に、"mifes"と言うエディターが有った。
そのマニュアルに1頁ほどの正規表現の説明があって、自分は最初に、それで 覚えて使い出した。 使い始めの頃は、何回も間違えたけど、少しづつ慣れてきた。 自分の周りを見ても、プログラマを何年もやっていても正規表現を知らない 人は、結構いる。 一旦、覚えてしまうと非常に便利だと思うんだけど。
|

|