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


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

正規表現



1 名前:正規表現 mailto:正規表現 [02/12/06 18:09.net]
正規表現

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頁ほどの正規表現の説明があって、自分は最初に、それで
覚えて使い出した。
使い始めの頃は、何回も間違えたけど、少しづつ慣れてきた。

自分の周りを見ても、プログラマを何年もやっていても正規表現を知らない
人は、結構いる。
一旦、覚えてしまうと非常に便利だと思うんだけど。

353 名前:名無しさん@お腹いっぱい。 [03/11/05 17:48.net]
正規表現で俺の存在を抹消してくれ。

354 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/05 19:01.net]
s/俺の存在//g;

355 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/05 20:10.net]
gsub!(/俺の存在/, "")



356 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/18 18:31.net]
捕手

357 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/19 01:38.net]
        rー、
    」´ ̄`lー) \
    T¨L |_/⌒/
     `レ ̄`ヽ〈
       |  i__1
     _ゝ_/ ノ
      L__jイ´_ )
        |  イ
         |  ノ--、           r'⌒ヽ_
        ゝ、___ノ二7  /´ ̄l、_,/}:\
         |ーi |   l_/ /__ィ::.  ゝ~_ィ´:; ,ゝ
        __〉 {      (T´ |1:::.  \_>、};;_」
       'ー‐┘       ! ` ̄''ァ一 、\ ヽ}  ← 保守
               〈` ̄ ̄^`¬ノ .::〔 ̄´
                   1  ヽ   .:::レ  ヽ、
                |_イー-、_;;j|_:.   ゝ、
                __,,,... -- |. {―――‐フゝ、   〉 -- ...,,,__
        _,, -‐ ´       ,r|__ト,    1ニノ ー'´       ` ‐- ,,_
    , ‐ ´         └―'´                     `


358 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/19 09:17.net]
>>353
それ捕手じゃなくて投手やっ!www

359 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/04 19:24.net]
別のスレからの引用
ps ax |grep '[s]shd'
とやると、grep自身の行にヒットしないそうだけど、なぜ?
sってメタ文字でもなんでもないのに。

360 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/04 19:30.net]
なぜって言われても、自明だが。

361 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/04 19:33.net]
grep sshd と何が違うの?

362 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/04 19:35.net]
あ、ごめん、わかった(w


363 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/04 19:36.net]
grep sshd だと、ps の出力に含まれる "grep sshd" の "sshd" がマッチする。

grep '[s]shd' だと、ps の出力には "grep [s]shd" が含まれるが、
この "[s]shd" は、[s]shd にはマッチしない。よね?わかる?

364 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/04 23:59.net]
なるほど。トリックだな。


365 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/05 10:59.net]
まあバッドノウハウだとも思うけどナー
www.namazu.org/~satoru/misc/bad-knowhow.html




366 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/05 13:26.net]
そこまでのものではないと思うけど、
この例だと、頭の中でpsの出力まで加工しちゃうからな(w


367 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/05 20:33.net]
grep -v grep でええやん。






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

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

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