正規表現
■ このスレッドは過去ログ倉庫に格納されています
1正規表現
NGNG 正規表現
NGNG
>>236 use utf8; してる?
NGNG
perl 質問スレにするなよ。
NGNG
というわけで、これにて終了。
正規表現スレはここまでです。
あれ?
正規表現スレはここまでです。
あれ?
NGNG
単語に「マッチしない」のは
どうやれば? ^\<word\>
じゃないし。
どうやれば? ^\<word\>
じゃないし。
NGNG
244あぼーん
NGNGあぼーん
NGNG
オ来リーの者じゃありませんが・・・
『詳説 正規表現 第2版』
Jeffrey E. F. Friedl 著
田和 勝 訳
2003年5月発行 -- 5月27日発売
464ページ
本体価格5,400円
ISBN4-87311-130-7
テキストやデータの処理に欠かせない強力なツールとして瞬く間
に普及した「正規表現」。現在ではPerl、Java、VB.NETやC#など
数多くの言語やツールに標準で装備されています。その幅広い可
用性、柔軟性と比類ない強力さにもかかわらず、実際に正規表現
を使いこなすことは難しいです。本書は正規表現の概念を詳細に
掘り下げる一方で、数多くの言語やツールの実例を示しながら、
正規表現についての理解を深める解説書です。第2版では、豊富
な実例を使い、詳しくていねいに解説するスタイルはそのままに、
Perl5.8の新機能に加え、Javaと.NETの正規表現にもそれぞれ独
立した章を設けるなど、全編にわたって大幅に加筆がなされまし
た。正規表現の本質を読み解く決定版です。とくに正規表現を使
いこなしていると自負している人にほど読んでほしい本です。
『詳説 正規表現 第2版』
Jeffrey E. F. Friedl 著
田和 勝 訳
2003年5月発行 -- 5月27日発売
464ページ
本体価格5,400円
ISBN4-87311-130-7
テキストやデータの処理に欠かせない強力なツールとして瞬く間
に普及した「正規表現」。現在ではPerl、Java、VB.NETやC#など
数多くの言語やツールに標準で装備されています。その幅広い可
用性、柔軟性と比類ない強力さにもかかわらず、実際に正規表現
を使いこなすことは難しいです。本書は正規表現の概念を詳細に
掘り下げる一方で、数多くの言語やツールの実例を示しながら、
正規表現についての理解を深める解説書です。第2版では、豊富
な実例を使い、詳しくていねいに解説するスタイルはそのままに、
Perl5.8の新機能に加え、Javaと.NETの正規表現にもそれぞれ独
立した章を設けるなど、全編にわたって大幅に加筆がなされまし
た。正規表現の本質を読み解く決定版です。とくに正規表現を使
いこなしていると自負している人にほど読んでほしい本です。
NGNG
あれ?今日買ってきたんだけど27日発売だったのね…
NGNG
>>246
つーことで発売記念age
つーことで発売記念age
NGNG
素数にマッチする正規表現募集。
NGNG
>>245
第1版と比較してのレビューきぼんぬ
第1版と比較してのレビューきぼんぬ
NGNG
NGNG
>>248
正規表現だけでなく、なんかしら言語使ってやればよい。
正規表現だけでなく、なんかしら言語使ってやればよい。
NGNG
>>248
何故敢えて茨の道を行くのか?
何故敢えて茨の道を行くのか?
253名無しさん@お腹いっぱい。
NGNGNGNG
>>253
Ruby の初・中級者なら、「Ruby Magic―Rubyで極める正規表現」はお勧め。
Ruby の初・中級者なら、「Ruby Magic―Rubyで極める正規表現」はお勧め。
255245
NGNG >>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日に買えたのよ。
第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日に買えたのよ。
NGNG
今日発売か。
昼休みに買ってくるか。
昼休みに買ってくるか。
NGNG
>>256さん、どうですた?
NGNG
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 とかの簡単なパース(並び替えとかそんな程度)を
タグ付き正規表現でさくっと処理できれば楽でうれしい。よろしく。
{________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 とかの簡単なパース(並び替えとかそんな程度)を
タグ付き正規表現でさくっと処理できれば楽でうれしい。よろしく。
NGNG
二個目の*がlongest matchしようとして
3個目の*にmatchさせたいであろう_まで持っていってしまうのが原因。
sed -e 's/{_*\(.*[^_]\)_*}/\1/'
3個目の*にmatchさせたいであろう_まで持っていってしまうのが原因。
sed -e 's/{_*\(.*[^_]\)_*}/\1/'
NGNG
'<,'>s@^@//@
NGNG
最少マッチって perl とか ruby にしかない?
sed, grep 等の伝統的 tool にはないの?
sed, grep 等の伝統的 tool にはないの?
NGNG
>>262
ないよ
ないよ
264名無しさん@お腹いっぱい。
NGNG265あぼーん
NGNGあぼーん
266262
NGNG 確かに sed では使っても grep では使わないかも。
いや、でも後方参照する時に必要なこともありえますね。
いや、でも後方参照する時に必要なこともありえますね。
NGNG
268名無しさん@お腹いっぱい。
NGNG 文字列中、丸括弧(全角、半角問わず)で閉じられた部分を取り出す表現を考えているけど、うまくマッチしてくれない。
(丸括弧の中に丸括弧は含まない。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"をマッチさせる別の表現はないですかね?
# 全角"("の中にどうも半角")"の文字が隠れてるのかなぁ?(あくまでも推測)
(丸括弧の中に丸括弧は含まない。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"をマッチさせる別の表現はないですかね?
# 全角"("の中にどうも半角")"の文字が隠れてるのかなぁ?(あくまでも推測)
NGNG
>>268
おめな、2byte文字と1byte文字が同じに扱われると思ってるらしいな。たぶん、
文系のドキュソだな。しかも、すぐ上で2byte文字コードの話出てたの見てね
えな。こいう、初心者質問は、webprogのPerl初心者スレ逝け。
おめな、2byte文字と1byte文字が同じに扱われると思ってるらしいな。たぶん、
文系のドキュソだな。しかも、すぐ上で2byte文字コードの話出てたの見てね
えな。こいう、初心者質問は、webprogのPerl初心者スレ逝け。
NGNG
NGNG
[ ] のなかに '-' と ']' の両方を入れたい場合はどうすればいいのですか?
NGNG
>>271
何で?
何で?
NGNG
>>271
[]-]
[]-]
NGNG
>>271
!.-[
!.-[
NGNG
保守
NGNG
regexp ml盛り上がってますね。読んでて楽しい。
NGNG
このスレはいつからまともな人たちをヲチするようになったのですか?
NGNG
すいません、テキストファイルの中の .bananaなどの単語(行頭ではなく)の先頭が
ドットがあるものだけをgrepで抜き出したいのですが、jp.appleのような単語までひっかかって
しまい上手く絞り込めません。
アドバイスをお願いします!!
ドットがあるものだけをgrepで抜き出したいのですが、jp.appleのような単語までひっかかって
しまい上手く絞り込めません。
アドバイスをお願いします!!
NGNG
NGNG
NGNG
ls -la | grep ' \.'
ではあかんの?
ではあかんの?
NGNG
>>281
行のどこかに"."があれるとヒットしてしまうんです
行のどこかに"."があれるとヒットしてしまうんです
NGNG
ls -la | grep '^\.'
こういうこと?
こういうこと?
NGNG
285283
NGNG 間違えた。
ls -1a | grep '^\.'
これか
ls -la | grep ' \.'
これだな。下は余計なものを拾う可能性もあるが。
ls -1a | grep '^\.'
これか
ls -la | grep ' \.'
これだな。下は余計なものを拾う可能性もあるが。
NGNG
ls -d .*
なんてね。
なんてね。
NGNG
あ、正規表現スレだった。すまん。
NGNG
ヤハリココハオモッテタトオリバカバッカリダッタナ(プ
NGNG
ls -la | awk '$9 ~ /^\./{print $0}' はどうよ。
290名無しさん@お腹いっぱい。
NGNG >>280 ふつーそういうときは ls つかわず findつかえ。
find ./ -type f -name "\.*" -print
find ./ -type f -name "\.*" -print
NGNG
(())
NGNG
>>290 ふつーそういうときは >> つかわず >> つかえ。
NGNG
backreferenceを前方参照と訳したのはなぜですか?
NGNG
後方参照としている訳もあるよ。
まぁ、現在の位置よりも前を参照するという意味では
日本語的には前方参照であってると思う。
ようするに「今いる位置より戻って参照」って意味になるんだから。
んでも、意味を考えて訳すなら「戻って参照」とか、どう?
まぁ、現在の位置よりも前を参照するという意味では
日本語的には前方参照であってると思う。
ようするに「今いる位置より戻って参照」って意味になるんだから。
んでも、意味を考えて訳すなら「戻って参照」とか、どう?
NGNG
>>294
ちょっと前にCスレで話題になったんだけど、Cで「前方参照」といった場合の前方って、
ファイルの終端方向を指す。「ひどい訳語だ」ってことで話は終わったんだけど、
正規表現でも混乱が見られるしなんかいい言葉ないもんかねえ。
日本語では時間を表す文脈で「前」にまるで正反対の意味があるからよくないのだと思う。
「以前」だと過去だし「前進」だと未来だし。
あとこれはすれ違いか? そうだよね。すまん。
ちょっと前にCスレで話題になったんだけど、Cで「前方参照」といった場合の前方って、
ファイルの終端方向を指す。「ひどい訳語だ」ってことで話は終わったんだけど、
正規表現でも混乱が見られるしなんかいい言葉ないもんかねえ。
日本語では時間を表す文脈で「前」にまるで正反対の意味があるからよくないのだと思う。
「以前」だと過去だし「前進」だと未来だし。
あとこれはすれ違いか? そうだよね。すまん。
NGNG
NGNG
おれは初版も新しいのも持ってるけど、自分の知識に自信がないうちは
お薦めしない。もちろんあったらあったで便利だけど。
やっぱり、「俺、正規表現バリバリだぜーYAH」状態で買って読んで
目からうろこ落ちまくり感を堪能するのがいいんではないかと。
お薦めしない。もちろんあったらあったで便利だけど。
やっぱり、「俺、正規表現バリバリだぜーYAH」状態で買って読んで
目からうろこ落ちまくり感を堪能するのがいいんではないかと。
298名無しさん@お腹いっぱい。
NGNG >294
するってえと、正規表現的には日本語で前方参照あるいは後方参照と書いてあったら
どっちもbackreferenceと思えってわけだぁね。
>295
計算機分野だと「前方」という言葉はforwardの訳語というのがあたりめえだと思ってたから、
正規表現関係だと、「前方参照」がbackreferenceのことだっていうのがわかんなくて
難儀したってわけよ。
するってえと、正規表現的には日本語で前方参照あるいは後方参照と書いてあったら
どっちもbackreferenceと思えってわけだぁね。
>295
計算機分野だと「前方」という言葉はforwardの訳語というのがあたりめえだと思ってたから、
正規表現関係だと、「前方参照」がbackreferenceのことだっていうのがわかんなくて
難儀したってわけよ。
NGNG
NGNG
301298
NGNG perl5の日本語マニュアルで、「前方参照」を "lookahead assertion"の訳語として
使っているやつがあった。
(?=regexp) 長さの無い、前方参照位置指定子。
(?!regexp) 長さの無い、前方参照否定位置指定子。
英語だと
(?=pattern) A zero-width positive lookahead assertion.
(?!pattern) A zero-width negative lookahead assertion.
わけわかんねぇな(w
使っているやつがあった。
(?=regexp) 長さの無い、前方参照位置指定子。
(?!regexp) 長さの無い、前方参照否定位置指定子。
英語だと
(?=pattern) A zero-width positive lookahead assertion.
(?!pattern) A zero-width negative lookahead assertion.
わけわかんねぇな(w
302298
NGNG ありゃりゃ?
(?<=pattern) A zero-width positive lookbehind assertion.
(?<!pattern) A zero-width negative lookbehind assertion.
"lookbehind assertion" の訳語って何だ?
(?<=pattern) A zero-width positive lookbehind assertion.
(?<!pattern) A zero-width negative lookbehind assertion.
"lookbehind assertion" の訳語って何だ?
NGNG
「俺の背後に立つな」
デューク東郷の格言だろ。
デューク東郷の格言だろ。
NGNG
lookahead 見越し
lookbehind 見返り
lookbehind 見返り
NGNG
前後不覚だな。
NGNG
>>296
>オライリーの正規表現本は買ったほうがいいですか?
持ってなくても覚えられるし、
エディタのサーチとか grep とかで実験しながら
感覚的に慣れるのも悪くないんじゃない?
ただし emacs で覚え始めるのはすすめない。
backslash で混乱する。
>オライリーの正規表現本は買ったほうがいいですか?
持ってなくても覚えられるし、
エディタのサーチとか grep とかで実験しながら
感覚的に慣れるのも悪くないんじゃない?
ただし emacs で覚え始めるのはすすめない。
backslash で混乱する。
NGNG
308あぼーん
NGNGあぼーん
NGNG
310あぼーん
NGNGあぼーん
NGNG
さげ保守
NGNG
313あぼーん
NGNGあぼーん
314高校生
NGNG boo
baa
baz
っていうテキストが例だとして、sedを用いて、
booまたはbaz、っていう正規表現はどうなるの?
rubyやperlならパイプ記号で条件和の表現が出るけど、
同じように書いてもsedに誤解されてしまう。
baa
baz
っていうテキストが例だとして、sedを用いて、
booまたはbaz、っていう正規表現はどうなるの?
rubyやperlならパイプ記号で条件和の表現が出るけど、
同じように書いてもsedに誤解されてしまう。
NGNG
>>314 ん? \|使えば良いのでは
316高校生
NGNG sed 's/boo\|baa/hoge/g' ./hage.txt
とかだとやっぱりだめなんすよね。
「boo」とかの単語の括り方がよくわからんのです。
とかだとやっぱりだめなんすよね。
「boo」とかの単語の括り方がよくわからんのです。
NGNG
GNU sed 4.0.7版 ではそれでもできてるけどな。
sed 's/\(boo\|baa\)/hoge/g' これでどう?
sed 's/\(boo\|baa\)/hoge/g' これでどう?
NGNG
>>317
gsedならできるがsedは食ってくれない。
gsedならできるがsedは食ってくれない。
NGNG
単一の正規表現じゃなきゃいかんの?
sedと決まってるなら
sed -e 's/boo/hoge/g' -e 's/baa/hoge/g'
でいいんちゃう?
置換後の文字列と置換前の文字列の片方とで重なりがある場合
どうするかひとしきりモメたりする ↓↓↓ のがお決まりだな。
sedと決まってるなら
sed -e 's/boo/hoge/g' -e 's/baa/hoge/g'
でいいんちゃう?
置換後の文字列と置換前の文字列の片方とで重なりがある場合
どうするかひとしきりモメたりする ↓↓↓ のがお決まりだな。
NGNG
単一の正規表現でないと記述が冗長で見た目がキモイ、
っていうのはあると思うよ。
おいらはインストール直後のFreeBSDの環境構築をスクリプトに任せたくて、
結局シェルスクリプトにawkな記述を書いて解決した。
カーネルの再構築にしても、/etc/下の記述にしても、要はテキストの置換なわけで。
本当はrubyがFreeBSDの/usr/bin下にあるようなご時世だったら
楽ができるんだけど、そこら辺は個人的な勉強不足だなぁ。
っていうのはあると思うよ。
おいらはインストール直後のFreeBSDの環境構築をスクリプトに任せたくて、
結局シェルスクリプトにawkな記述を書いて解決した。
カーネルの再構築にしても、/etc/下の記述にしても、要はテキストの置換なわけで。
本当はrubyがFreeBSDの/usr/bin下にあるようなご時世だったら
楽ができるんだけど、そこら辺は個人的な勉強不足だなぁ。
321名無しさん@お腹いっぱい。
NGNG {a,b}上の言語Lが
『aaで開始し、かつ、bbを部分列として含む』という条件を満たす語からなるとき
Lを表す正規表現ってどうなるの?
L=aa(a*b*+bb)* ?
『aaで開始し、かつ、bbを部分列として含む』という条件を満たす語からなるとき
Lを表す正規表現ってどうなるの?
L=aa(a*b*+bb)* ?
NGNG
L=aa(a+b)*bb(a+b)*
NGNG
>>321
*+ ???
*+ ???
NGNG
>323
'+'より'|'のほうが普通かな。
L=aa(a|b)*bb(a|b)*
本来的には連接、選択、閉包が表現できればいい。
'+'より'|'のほうが普通かな。
L=aa(a|b)*bb(a|b)*
本来的には連接、選択、閉包が表現できればいい。
NGNG
L ::= aA
A ::= aB
B ::= aB | bC
C ::= aB | bD
D ::= ε | aD | bD
A ::= aB
B ::= aB | bC
C ::= aB | bD
D ::= ε | aD | bD
NGNG
.*
何にでもマッチする最強の正規表現です!
何にでもマッチする最強の正規表現です!
327名無しさん@お腹いっぱい。
NGNGNGNG
キター
NGNG
ageてるし、ネタと見た。
NGNG
>>329
しね!
しね!
331あぼーん
NGNGあぼーん
332あぼーん
NGNGあぼーん
333名無しさん@お腹いっぱい。
NGNG うまづら。
NGNG
ほす。
NGNG
☆湯
NGNG
[ruby-list:38393] じゃないけど、[a-z] みたいな文字クラスの表現は、
EBCDIC とかだと「意図した通り」には動かないと思うんだけど、
ASCII か ASCII を包含したキャラクタセットという前提で書くべきものなの?
EBCDIC とかだと「意図した通り」には動かないと思うんだけど、
ASCII か ASCII を包含したキャラクタセットという前提で書くべきものなの?
NGNG
>>336
[:lower:] とかは使っちゃだめ?
[:lower:] とかは使っちゃだめ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★2 [ごまカンパチ★]
- 【大阪】日本一高い観覧車が落雷で緊急停止 約20人乗客が閉じ込められ9時間にわたり救助活動 [七波羅探題★]
- 【・(ェ)・】「くまちゃんがいた」散歩中の2歳園児が発見 クリ林に1頭のクマ…保育士「ワンちゃんだね…」と声かけて移動 [Ailuropoda melanoleuca★]
- ラピダス、第2工場建設でも見えぬ顧客 技術開発も難題山積 [蚤の市★]
- 【芸能】安達祐実 44歳の最新姿「ぇーーーーー!!!」「声出た」「なんなの」「まって」「ワオ」 [湛然★]
- 【大阪】「もっとこっち来てよ」女子高校生を電車内に連れ込み 小学校教諭再逮捕「話をしたかっただけ [七波羅探題★]
- 🖐( -᷄ὢ)これから>>2の>>3なんで……
- 【悲報】日本の田舎、もう住める場所じゃないと話題に
- 足るを知るっていう考えは素晴らしいと思うけど、やっぱり生きてる以上
- えっ?肉離れって菜食主義の事じゃないの?俺ずっと
- 30才がJK好きなのってロリコン?
- 【悲報】足立区11人轢き逃げ2名殺害男37歳(指名非公表)の母「車は好きな子だったけど」
