正規表現at UNIX
正規表現 - 暇つぶし2ch262:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/05/27 21:38.net
二個目の*がlongest matchしようとして
3個目の*にmatchさせたいであろう_まで持っていってしまうのが原因。

sed -e 's/{_*\(.*[^_]\)_*}/\1/'

264:名無しさん@お腹いっぱい。
03/05/28 00:59.net
'<,'>s@^@//@

265:名無しさん@お腹いっぱい。
03/05/28 01:03.net
最少マッチって perl とか ruby にしかない?
sed, grep 等の伝統的 tool にはないの?

266:名無しさん@お腹いっぱい。
03/05/28 01:07.net
>>262
ないよ

267:名無しさん@お腹いっぱい。
03/05/28 14:45.net
>>262
grepに最小一致の機能があったとして
それの魅力はイッタイ何なのだろうか?


268:あぼーん
あぼーん.net
あぼーん

269:262
03/05/28 20:42.net
確かに sed では使っても grep では使わないかも。
いや、でも後方参照する時に必要なこともありえますね。


270:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/05/30 22:42.net
>>268
おめな、2byte文字と1byte文字が同じに扱われると思ってるらしいな。たぶん、
文系のドキュソだな。しかも、すぐ上で2byte文字コードの話出てたの見てね
えな。こいう、初心者質問は、webprogのPerl初心者スレ逝け。



273:名無しさん@お腹いっぱい。
03/06/05 14:26.net
>>268
Perl5.8.0 + UTF8 でやったら 1 になったよ。


274:名無しさん@お腹いっぱい。
03/06/07 12:10.net
[ ] のなかに '-' と ']' の両方を入れたい場合はどうすればいいのですか?

275:名無しさん@お腹いっぱい。
03/06/07 12:20.net
>>271
何で?

276:名無しさん@お腹いっぱい。
03/06/07 12:29.net
>>271
[]-]

277:名無しさん@お腹いっぱい。
03/06/17 23:25.net
>>271
!.-[

278:名無しさん@お腹いっぱい。
03/07/03 21:13.net
保守

279:名無しさん@お腹いっぱい。
03/07/08 11:49.net
regexp ml盛り上がってますね。読んでて楽しい。


280:名無しさん@お腹いっぱい。
03/07/08 14:02.net
このスレはいつからまともな人たちをヲチするようになったのですか?

281:名無しさん@お腹いっぱい。
03/07/12 21:26.net
すいません、テキストファイルの中の .bananaなどの単語(行頭ではなく)の先頭が
ドットがあるものだけをgrepで抜き出したいのですが、jp.appleのような単語までひっかかって
しまい上手く絞り込めません。

アドバイスをお願いします!!

282:名無しさん@お腹いっぱい。
03/07/12 21:54.net
>>278
\b?\.\w+?
で、どうじゃろ?

283:名無しさん@お腹いっぱい。
03/07/12 22:44.net
>>279
すいません、なんか上手くいかないです。
ls -laでディレクトリ内の全ファイルを表示して、grepで隠しファイルだけを抽出したかったのですが。

284:名無しさん@お腹いっぱい。
03/07/12 23:34.net
ls -la | grep ' \.'
ではあかんの?


285:名無しさん@お腹いっぱい。
03/07/12 23:57.net
>>281
行のどこかに"."があれるとヒットしてしまうんです

286:名無しさん@お腹いっぱい。
03/07/13 00:28.net
ls -la | grep '^\.'
こういうこと?

287:名無しさん@お腹いっぱい。
03/07/13 00:28.net
>>282
とはいえ、"."って、ファイル名にしかでてこないよね?
>>281 をよーくみる。


288:283
03/07/13 00:30.net
間違えた。

ls -1a | grep '^\.'
これか
ls -la | grep ' \.'
これだな。下は余計なものを拾う可能性もあるが。

289:名無しさん@お腹いっぱい。
03/07/13 00:31.net
ls -d .*
なんてね。


290:名無しさん@お腹いっぱい。
03/07/13 00:32.net
あ、正規表現スレだった。すまん。

291:名無しさん@お腹いっぱい。
03/07/13 02:00.net
ヤハリココハオモッテタトオリバカバッカリダッタナ(プ

292:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/07/13 14:36.net
(())

295:名無しさん@お腹いっぱい。
03/07/14 11:38.net
>>290 ふつーそういうときは >> つかわず >> つかえ。

296:名無しさん@お腹いっぱい。
03/07/14 19:04.net
backreferenceを前方参照と訳したのはなぜですか?


297:名無しさん@お腹いっぱい。
03/07/14 21:19.net
後方参照としている訳もあるよ。
まぁ、現在の位置よりも前を参照するという意味では
日本語的には前方参照であってると思う。
ようするに「今いる位置より戻って参照」って意味になるんだから。

んでも、意味を考えて訳すなら「戻って参照」とか、どう?

298:名無しさん@お腹いっぱい。
03/07/14 21:32.net
>>294
ちょっと前にCスレで話題になったんだけど、Cで「前方参照」といった場合の前方って、
ファイルの終端方向を指す。「ひどい訳語だ」ってことで話は終わったんだけど、
正規表現でも混乱が見られるしなんかいい言葉ないもんかねえ。

日本語では時間を表す文脈で「前」にまるで正反対の意味があるからよくないのだと思う。
「以前」だと過去だし「前進」だと未来だし。

あとこれはすれ違いか? そうだよね。すまん。

299:名無しさん@お腹いっぱい。
03/07/14 21:41.net
>>279 >>281 >>283 >>284 >>285 >>286 >>287 >>289 >>290

みなさま、ありがとうございます。

シングルクォーテーションに空白が使えたり、
アッパーチルダとハット(キャレット?)の区別を知ったりと、
正規表現の難しさを知りました。

今、「テキストデータ料理学」っていう古い本を読んでいるのですが、
オライリーの正規表現本は買ったほうがいいですか?

(もう2~3週間前にオライリーのサイトでカタログを注文したのに、
まだ来ない…)

300:名無しさん@お腹いっぱい。
03/07/14 22:23.net
おれは初版も新しいのも持ってるけど、自分の知識に自信がないうちは
お薦めしない。もちろんあったらあったで便利だけど。

やっぱり、「俺、正規表現バリバリだぜーYAH」状態で買って読んで
目からうろこ落ちまくり感を堪能するのがいいんではないかと。

301:名無しさん@お腹いっぱい。
03/07/14 23:31.net
>294
するってえと、正規表現的には日本語で前方参照あるいは後方参照と書いてあったら
どっちもbackreferenceと思えってわけだぁね。
>295
計算機分野だと「前方」という言葉はforwardの訳語というのがあたりめえだと思ってたから、
正規表現関係だと、「前方参照」がbackreferenceのことだっていうのがわかんなくて
難儀したってわけよ。


302:名無しさん@お腹いっぱい。
03/07/14 23:33.net
>>297
>>296は学ぶ意欲を持っているから、今のうちに買っておいて損はないと思う。
むしろ薦める。
オイラリーはハズレが少ないからな。

303:名無しさん@お腹いっぱい。
03/07/14 23:35.net
>>298
俺はperlから入ったから後方参照が当たり前かと思ってた。
他言語使うようになってから吃驚したってわけよ。

304:298
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
03/07/14 23:48.net
ありゃりゃ?

(?<=pattern) A zero-width positive lookbehind assertion.
(?<!pattern) A zero-width negative lookbehind assertion.

"lookbehind assertion" の訳語って何だ?


306:名無しさん@お腹いっぱい。
03/07/15 00:32.net
「俺の背後に立つな」
デューク東郷の格言だろ。

307:名無しさん@お腹いっぱい。
03/07/15 00:35.net
lookahead 見越し
lookbehind 見返り

308:名無しさん@お腹いっぱい。
03/07/15 01:01.net
前後不覚だな。

309:名無しさん@お腹いっぱい。
03/07/15 03:12.net
>>296
>オライリーの正規表現本は買ったほうがいいですか?

持ってなくても覚えられるし、
エディタのサーチとか grep とかで実験しながら
感覚的に慣れるのも悪くないんじゃない?

ただし emacs で覚え始めるのはすすめない。
backslash で混乱する。

310:名無しさん@お腹いっぱい。
03/07/15 07:21.net
>>297
>>299
>>306
ちょっと大きな本屋に行って立ち読みしてみます。
ありがとうございました~

311:あぼーん
あぼーん.net
あぼーん

312:名無しさん@お腹いっぱい。
03/07/17 13:35.net
>>308
二度と目を覚ますな。


313:あぼーん
あぼーん.net
あぼーん

314:名無しさん@お腹いっぱい。
03/07/20 21:36.net
さげ保守

315:名無しさん@お腹いっぱい。
03/07/27 22:01.net
OOはもうすぐ1.1出るけど、MSWORDよりセキュリティ大丈夫かな?
スレリンク(bsoft板:392番)


316:あぼーん
あぼーん.net
あぼーん

317:高校生
03/08/02 17:12.net
boo
baa
baz
っていうテキストが例だとして、sedを用いて、
booまたはbaz、っていう正規表現はどうなるの?
rubyやperlならパイプ記号で条件和の表現が出るけど、
同じように書いてもsedに誤解されてしまう。

318:名無しさん@お腹いっぱい。
03/08/02 17:52.net
>>314 ん? \|使えば良いのでは


319:高校生
03/08/02 18:06.net
sed 's/boo\|baa/hoge/g' ./hage.txt
とかだとやっぱりだめなんすよね。
「boo」とかの単語の括り方がよくわからんのです。

320:名無しさん@お腹いっぱい。
03/08/02 20:53.net
GNU sed 4.0.7版 ではそれでもできてるけどな。
sed 's/\(boo\|baa\)/hoge/g' これでどう?


321:名無しさん@お腹いっぱい。
03/08/02 22:07.net
>>317
gsedならできるがsedは食ってくれない。

322:名無しさん@お腹いっぱい。
03/08/03 01:09.net
単一の正規表現じゃなきゃいかんの?
sedと決まってるなら
sed -e 's/boo/hoge/g' -e 's/baa/hoge/g'
でいいんちゃう?

置換後の文字列と置換前の文字列の片方とで重なりがある場合
どうするかひとしきりモメたりする ↓↓↓ のがお決まりだな。

323:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/08/13 20:45.net
L=aa(a+b)*bb(a+b)*

326:名無しさん@お腹いっぱい。
03/08/13 22:05.net
>>321
*+ ???

327:名無しさん@お腹いっぱい。
03/08/13 23:05.net
>323
'+'より'|'のほうが普通かな。
L=aa(a|b)*bb(a|b)*

本来的には連接、選択、閉包が表現できればいい。


328:名無しさん@お腹いっぱい。
03/08/13 23:08.net
L ::= aA
A ::= aB
B ::= aB | bC
C ::= aB | bD
D ::= ε | aD | bD


329:名無しさん@お腹いっぱい。
03/08/13 23:34.net
.*
何にでもマッチする最強の正規表現です!


330:名無しさん@お腹いっぱい。
03/08/13 23:50.net
>>326
ドットが含まれてなかったらマッチしない罠


331:名無しさん@お腹いっぱい。
03/08/13 23:53.net
キター

332:名無しさん@お腹いっぱい。
03/08/14 00:13.net
ageてるし、ネタと見た。

333:名無しさん@お腹いっぱい。
03/08/14 23:29.net
>>329
しね!

334:あぼーん
あぼーん.net
あぼーん

335:あぼーん
あぼーん.net
あぼーん

336:名無しさん@お腹いっぱい。
03/08/28 20:12.net
うまづら。

337:名無しさん@お腹いっぱい。
03/09/02 03:30.net
ほす。

338:名無しさん@お腹いっぱい。
03/09/14 04:27.net
☆湯

339:名無しさん@お腹いっぱい。
03/09/16 13:49.net
[ruby-list:38393] じゃないけど、[a-z] みたいな文字クラスの表現は、
EBCDIC とかだと「意図した通り」には動かないと思うんだけど、
ASCII か ASCII を包含したキャラクタセットという前提で書くべきものなの?

340:名無しさん@お腹いっぱい。
03/09/16 14:08.net
>>336
[:lower:] とかは使っちゃだめ?

341:名無しさん@お腹いっぱい。
03/09/16 15:34.net
>>337
あ、いや、質問が悪かったですね。
範囲指定する文字クラスはどうあるべき (書くべき) か?っていう話です。

ていうか、 re_format(7) を私の拙い英語力で読んでみたところ、
ASCII コードの並びを前提とするような文字クラスの範囲指定は、
portable じゃないからやらない方が良い、ということのようですね。

というわけで、極力 >>337 さんのみたいな文字クラス指定を使った方が良い、と。

342:名無しさん@お腹いっぱい。
03/09/20 10:41.net


343:名無しさん@お腹いっぱい。
03/10/08 15:50.net
保守

344:名無しさん@お腹いっぱい。
03/10/12 16:53.net
vimで"DEL"という文字列が含む行で、"DEL"以下を削除したい場合はどうしたらいいでしょうか?

345:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/10/13 15:10.net
>>343
サンクス、すみません。

349:名無しさん@お腹いっぱい。
03/10/18 17:51.net


350:名無しさん@お腹いっぱい。
03/10/21 23:12.net
>>343
DELは残したい場合はどうすればいいですか?

351:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/11/05 19:01.net
s/俺の存在//g;

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

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

357:名無しさん@お腹いっぱい。
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:名無しさん@お腹いっぱい。
03/11/19 09:17.net
>>353
それ捕手じゃなくて投手やっ!www

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

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

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

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


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

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

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


365:名無しさん@お腹いっぱい。
03/12/05 10:59.net
まあバッドノウハウだとも思うけどナー
URLリンク(www.namazu.org)


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


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

368:名無しさん@お腹いっぱい。
03/12/30 00:05.net
muttのaliasで
    alias keyword Name <mailaddress>
みたいなフォーマットで並んでいるファイルを
    alias keyword <mailaddress> # Name
に整形しようと思い,
    cat alias | sed 's![[:space:]]*alias[[:space:]]*\([^[:space:]]*\)[[:space:]]*\(.*\)[[:space:]]*<\(.*\)>!alias \1 <\3> # \2!' > alias.new
としました.

上手く行くんですが, "#" の位置が行ごとにバラバラなのが気持ち悪いです.

そのファイルで "#" 以前の文字数が一番長いものを調べ, そこに合わせて
その他の行の "#" 以降を持ってくるようにするにはどうすればいいんでしょうか?

369:名無しさん@お腹いっぱい。
03/12/30 00:14.net
sedでやれってか?
漏れはへたれなので、Perlなどを使ってしまうが(w


370:名無しさん@お腹いっぱい。
03/12/30 00:28.net
>>364
2パスでやれば?

371:名無しさん@お腹いっぱい。
03/12/30 09:20.net
  2パス?

372:名無しさん@お腹いっぱい。
03/12/30 16:05.net
>>367
"#" 以前が一番長いのを調べてから、それに合わせて整形し直せば。

373:名無しさん@お腹いっぱい。
04/01/11 21:57.net
>>364
70桁でそろえる場合

sed ':a /.\{70\}\#/!bc; b; :c s/\(.*\)\#\(.*\)$/\1 \#\2/; ta'

亀ですが、こんなんでどうでしょう


374:名無しさん@お腹いっぱい。
04/01/11 22:21.net
決め打ちでいいなら何の苦労もないわけで。

375:名無しさん@お腹いっぱい。
04/01/14 23:40.net
>>369
反則技。gawk で。sed ではどうやっても出来ないような気が……(_ _;)
# sed でできるのか?

{
a=index($0,"#");
if(a>best) {
best=a;
}
c[FNR]=$0
}

END {
for(i=0;i<=NR;i++){
x=index(c[i],"#");
if(x && x<best) {
for (j=x;j<best;j++) {
gsub("#"," #",c[i]);
}
}
print c[i]
}
}


376:名無しさん@お腹いっぱい。
04/01/15 23:45.net
( ´∀`)

377:名無しさん@お腹いっぱい。
04/02/03 10:33.net
保守

378:名無しさん@お腹いっぱい。
04/02/06 18:23.net
教えてください。
Windows用のファイルをemacsなんかで開いたとき,最下行に
^Z
という符号が表示されることがあります。
これはいったい何でしょうか?


379:名無しさん@お腹いっぱい。
04/02/06 19:31.net
いわゆるeof

380:名無しさん@お腹いっぱい。
04/02/06 21:01.net
>>375
ありがとうございます。この符号のあるファイル同士をcatで連結すると,途
中にこの符号が入ってしまいます。この符号をsedでマッチさせて消去したい
のですが,どうすればいいでしょうか。
sed '/^$/d' ではダメでした。


381:名無しさん@お腹いっぱい。
04/02/06 21:09.net
>>376
いわゆるeof

382:名無しさん@お腹いっぱい。
04/02/06 22:38.net
EOF符号をsedで消去できますか?


383:名無しさん@お腹いっぱい。
04/02/21 22:59.net
grep で使える正規表現を精密に解説したサイトはありますかね?
日本語/英語どっちでもいいのですが。

384:名無しさん@お腹いっぱい。
04/02/22 00:19.net
URLリンク(www.kt.rim.or.jp)

385:名無しさん@お腹いっぱい。
04/02/22 00:29.net
レベル低いなー
378に対して出来るとも出来ないとも言えないのか...


386:名無しさん@お腹いっぱい。
04/02/22 00:58.net
378=381 ですか?

387:名無しさん@お腹いっぱい。
04/02/22 02:14.net
>>378
できるよ。普通に
s/^Z//
とかすればいい。もちろん^ZはEOFの一文字ね。

こんなの試せばすぐわかるだろと思ってたんだが、よく>>376を読むと、
「正規表現は純なテキストであるべきで特殊記号を混ぜるのはイクナイ」
と感じたんだろうな。まあ気持ちはわかるわ。

最近の正規表現拡張では、文字をコードの数値で表現する文法が
入ってたりする方が普通(例えばperlとか)だもんな。

388:338
04/02/22 02:24.net
でね、特殊記号の特別なケースがtab。大昔は\tなんて表現なかったさ。
よく画面上の見た目やハードコピーや雑誌からシェルスクリプトを打ち直して、
tabとspaceの違いで動かないなんてことが時々あったんだよ。

あと勝手にシェルスクリプトを整形されて動かなくなるとか。


389:名無しさん@お腹いっぱい。
04/02/22 02:52.net
>>382
いいえ
>>383
ありがトン!


390:名無しさん@お腹いっぱい。
04/02/22 02:55.net
>>382
381=385 が正解


391:名無しさん@お腹いっぱい。
04/02/22 16:53.net
>>380
ブックマークにいれますた。

392:名無しさん@お腹いっぱい。
04/03/27 17:05.net
[\\w$'-]
これはどういうことなのでしょう?
[\w$'-]
ならわかるのですが..

393:名無しさん@お腹いっぱい。
04/03/27 17:09.net
>>388
処理系は何?

394:名無しさん@お腹いっぱい。
04/03/27 17:20.net
>>389
Rubyです
Regexp::compile("\b\d[\d\.]+\d\b|[\w]+|[\\w$'-]+")
scanメソッドで英文を分割してます

395:名無しさん@お腹いっぱい。
04/03/27 17:22.net
>>390
ほほう。バグってる悪寒。

396:名無しさん@お腹いっぱい。
04/03/27 17:25.net
Regexp::compile("\\b\\d[\\d\\.,]+\\d\\b")
こんなのがあるんですが..

397:名無しさん@お腹いっぱい。
04/03/27 18:30.net
>>392
Ruby で "..." の中で '\' を書くときは、'\' でエスケープする必要があるの。
つまり Regexp::compile("\\w") は /\w/ と同じ。

>>390 のだと '\' のエスケープが足りない部分があるように見える。
たとえば、 "\w" は "w" に、 "\b" は "\010" になっちゃう。
ので「バグってる悪寒」と言いました。

398:名無しさん@お腹いっぱい。
04/03/27 18:53.net
>>393
なるほど、必死に\\と重ねる正規表現について調べてましたよ
ありがとう


399:名無しさん@お腹いっぱい。
04/03/30 01:42.net
perl で質問です。

NOTE note "note" notes

上のような文字列を「book」だけを「note」に置換したいのですが
s/\bnote\b/book/g
のようにすると、ダブルクォートで囲まれているものも置換されてしまうのですが
それを

NOTE book "note" notes

のようにするにはどう表記すればよいのでしょうか?
詳しい方、教えてください。


400:名無しさん@お腹いっぱい。
04/03/30 04:15.net
>>395
> NOTE note "note" notes
>
> 上のような文字列を「book」だけを「note」に置換したいのですが

401:名無しさん@お腹いっぱい。
04/03/30 10:07.net
>>396
その下の
s/\bnote\b/book/g
ぐらい読んで多目にみてやれ。

>>395
とはいえ、仕様があいまいすぎ。
'note' はどうする? :note: は? "abc note def" は?

402:名無しさん@お腹いっぱい。
04/03/30 10:29.net
s/ note / book /g
か?

>>397
> とはいえ、仕様があいまいすぎ。
んだな。

403:名無しさん@お腹いっぱい。
04/03/30 12:34.net
>>395
s/(?=[^"])\bnote\b(?=[^"])/book/g;

# こんなんで良いわけないよなと思いつつ・・・

404:名無しさん@お腹いっぱい。
04/03/31 02:02.net
>>397

> とはいえ、仕様があいまいすぎ。

すいません、おっしゃるとおりです。
ある単語(note)をある単語(book)に置換したいのですが、
ダブルクォートで囲まれているもの("note")は、その置換からは除外したいのです。

> 'note' はどうする? :note: は? "abc note def" は?

したがいまして、これらはとりあえず想定外で構わないので置換してしまっても構いません。
もう少し昨日の例を詳しく書きますと

NOTE,note"note"notes-note

このようなものでも

NOTE,book"note"notes-book

のようになってくれるのを期待しています。

ただ、"abc note def" これも想定外で構わないのですが
対応が可能であるのなら、私の勉強の為に教えてくださるとありがたく思います。

>>399
ありがとうございます。

>s/(?=[^"])\bnote\b(?=[^"])/book/g;
これを試してみました。
基本的にOKかなと思ったのですが、行頭、行末では置換の対象となってくれませんでした。



405:名無しさん@お腹いっぱい。
04/03/31 02:52.net
>>400
補足です。
ここでいう単語とは \w+ で表せる範囲のもので、
アルファベット大文字、小文字も含めて完全に単語の
先頭から末尾までが一致するものです。


406:名無しさん@お腹いっぱい。
04/03/31 07:45.net
もっと簡単にできるかもしれないけど、
s/(^|(?<=[^\w"]))note\b|\bnote($|(?=[^\w"]))/book/g;
とかは?

> ただ、"abc note def" これも想定外で構わないのですが

後ろから数えた"の個数が奇数ならマッチしないようにして、
$b =~ s/\bnote\b(?=([^"]*"[^"]*")*[^"]*$)/book/g;
とすれば、"のマッチングが保証できる範囲ではなんとかなるかも。
前からの"の個数でマッチさせようとしたら、
可変長のlook-behindは実装してないらしい。(perl 5.8)


407:名無しさん@お腹いっぱい。
04/03/31 14:53.net
s/"note"/hogehoge/g
s/note/book/g
s/hogehoge/"note"/g
おれならこうしちゃうな。
考えんのめんどい。

408:名無しさん@お腹いっぱい。
04/04/01 01:10.net
>>402

ありがとうございました。
たいへん勉強になりました。


409:名無しさん@お腹いっぱい。
04/04/07 15:07.net
質問させてください。

&にはマッチして欲しいのですが、&にはマッチして欲しくないのです。

どのように記述すればよいのでしょう。

お願いします。

410:405
04/04/07 15:09.net
&にはマッチ
&amp;にはマッチしない

でした。すいません。

411:名無しさん@お腹いっぱい。
04/04/07 15:26.net
>>405
Perl5 でいい?

412:名無しさん@お腹いっぱい。
04/04/07 15:32.net
>>405
/&(?!amp;)/

413:名無しさん@お腹いっぱい。
04/04/11 13:22.net
正規表現のおすすめ書って何がありますか?

414:名無しさん@お腹いっぱい。
04/04/11 14:13.net
オライリーのやつ。

415:名無しさん@そうだ選挙に行こう
04/07/11 16:49.net
ワイルドカード(DOS)の *.txt って、正規表現だとどう書くの?

416:名無しさん@お腹いっぱい。
04/07/11 20:35.net
{(([0-9a-zA-Z]){0,})\.txt}とか半端に返してみるテスト

417:名無しさん@お腹いっぱい。
04/07/11 20:46.net
[^\\/]+\.[Tt][Xx][Tx]\z とか (ry

418:名無しさん@お腹いっぱい。
04/07/11 22:41.net
foo と bar 両方含む行をマッチさせたいんだけど、
awkでいうところの and演算子
% awk /foo/&&/bar/
が使える、windowsで動くgrepツールなんか教えてください。

#絞込み再検索のないGUIなgrepツールなんかイラネ

419:名無しさん@お腹いっぱい。
04/07/11 23:39.net
>>412,413
. 記号は \ でエスケープになるのですね。.*\.txt でマッチはしました。
助かりました、ありがとうです。

420:名無しさん@お腹いっぱい。
04/07/12 22:46.net
>>414

FIND "foo" | FIND "bar"

みたいのじゃ駄目?

421:名無しさん@お腹いっぱい。
04/07/14 00:51.net
>>414
|が使えるツールなら、/foo.*bar|bar.*foo/とかで近似できるんじゃないの。
CygwinのGNU grepで試してみた。

> cat foobar.txt
foo
bar
foo foo
foo bar
bar bar
bar foo
> grep -n "foo.*bar\|bar.*foo" foobar.txt
4:foo bar
6:bar foo
>

422:414
04/07/23 03:17.net
なるほど、andをorに展開すればいいのか。
しかし fooかつbarかつbazを検索、つーばあい展開すんのめんどくさいなぁ。

windowsのGUIなgrepツールは、サブフォルダも検索、とかできて
結構便利なのも歩けど、パイプとかorが使えなかったりしてイマイチ。

結局cygwinでawk使ってるけど、これもいまひとつメンドクサイ。
2chのログを検索してるだけなんだが_| ̄|○

423:名無しさん@お腹いっぱい。
04/07/29 01:12.net
>>418
xyzzy の ggrep 辺りがいいんじゃない?

424:名無しさん@お腹いっぱい。
04/07/30 00:18.net
Windows の AWKじゃだめですか?

425:名無しさん@お腹いっぱい。
04/08/03 09:48.net
Perloしかないべ


426:名無しさん@お腹いっぱい。
04/08/06 22:51.net
#から行末までをあらわす正規表現ってどうやればいいんでしょうか。

427:名無しさん@お腹いっぱい。
04/08/06 23:22.net
#.*$

428:名無しさん@お腹いっぱい。
04/08/12 15:32.net
#[^#]*$

429:名無しさん@お腹いっぱい。
04/08/24 00:25.net
質問があります。

サクラエディタ(正規表現ライブラリ:BREGEXP.DLL)でCソース中のhogehogeをgrepしてた
場合に、コメント化(//)されている行だけは検索結果に表示したくないんですが、
どのような正規表現で検索すればいいでしょうか?


430:名無しさん@お腹いっぱい。
04/08/24 01:48.net
あげ

431:名無しさん@お腹いっぱい。
04/08/24 01:56.net
>>425
そのエディタよく知らないんだけど、Unix で動くの?

432:名無しさん@お腹いっぱい。
04/08/24 13:36.net
スレタイだけ見て、板を確認してないんだと思われ。

433:名無しさん@お腹いっぱい。
04/08/24 13:43.net
それを言うと、このスレ自体板違いな気もしなくはないが。ム板のだけで十分やん。

434:425
04/08/24 21:24.net
UNIX板って知っていて質問をしましたが。
とりあえず、ム板に逝ってみます。

435:名無しさん@お腹いっぱい。
04/08/24 21:38.net
>>430
Unix 用のソフトなの?

436:名無しさん@お腹いっぱい。
04/08/24 22:51.net
>>431
is not UNIX

437:名無しさん@お腹いっぱい。
04/08/24 23:41.net
多分エディタの種類はどうでもよくて、 /\/\*.*\*\/ とか、そんな答えを期待していたと思われ


438:名無しさん@お腹いっぱい。
04/09/05 06:33.net
ム板の正規表現もとんと書き込みないから、テストしてみたら
書き込めた。ここもどうなんだか、書き込んでみる。

439:名無しさん@お腹いっぱい。
04/09/06 18:18.net
ハハ*.*ハハ

440:名無しさん@お腹いっぱい。
04/09/07 16:51.net
指定文字列A 何か 指定文字列B
という何かにヒットさせるにはどういう正規表現にすればいいですか?

441:名無しさん@お腹いっぱい。
04/09/07 17:18.net
>>436
素で答えると「文字列A.*文字列B」だけど?そういう話?

もちろん文字列ABに特殊記号があったらどうするかとか、
.*は最長マッチでいいのとか、いろいろ細かい話はあるけど。

442:436
04/09/07 17:21.net
自分で、
(文字列A).*{2,15}(文字列B)
とかでやってみたんですが、
マッチするのが、
指定文字列A 何か 指定文字列B
がマッチしてしまうので…

何か の部分だけを抽出しようと思ってます。

443:名無しさん@お腹いっぱい。
04/09/07 17:55.net
後から取り出したい部分を()で囲む。(.*{2,15})みたいに。

444:436
04/09/08 01:37.net
>>439さんの方法でも結果が変わりませんでした… 処理系が違うからかな?

とりあえず諦めて、
指定文字列A 何か 指定文字列B
をマッチさせて、指定文字列A+1文字目から 何か の文字数だけ切り取ることにします。

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

445:名無しさん@お腹いっぱい。
04/09/08 02:28.net
>>440
で、その処理系が何かを晒すつもりは毛頭無いわけですね?

446:名無しさん@お腹いっぱい。
04/09/08 10:13.net
>>441
ハゲには無理

447:436
04/09/08 11:58.net
何度もすいません。

C#です… 改めてやってみると>>439さんの方法でいけました。
group[1]に入ってたんですね。全体しか見てませんでした。

板違いにお騒がせしました。

448:名無しさん@お腹いっぱい。
04/09/10 00:33.net
Perlの場合、

$_ = "いっぱい";
s/い/お/;          # おっぱい
s/い/お/g;         # おっぱお

ということでおk?

449:名無しさん@お腹いっぱい。
04/09/10 02:41.net
  _  ∩
( ゚∀゚)彡 おっぱい!おっぱお!
 ⊂彡


450:名無しさん@お腹いっぱい。
04/09/10 15:00:12.net
小学生のころ流行ったネタ

451:名無しさん@お腹いっぱい。
04/09/27 06:28:21.net
性器表現

452:名無しさん@お腹いっぱい。
04/09/27 09:23:16.net
ワロテモータ

453:名無しさん@お腹いっぱい。
04/09/27 11:29:59.net
さんざん概出なのに・・・

454:
04/10/13 14:29:29.net



455:名無しさん@お腹いっぱい。
04/10/13 14:50:43.net
.*

456:ウサチャソ
04/10/29 21:49:31.net
↑アナルは性器じゃねーよな、とか思ってよく見ると、ドット米。
イボ痔か?

457:名無しさん@お腹いっぱい。
04/10/30 20:30:37.net
>>452
拭き忘れたウンチだよ。きっと!

458:名無しさん@お腹いっぱい。
04/11/10 15:37:24.net
regexp

459:名無しさん@お腹いっぱい。
04/11/26 21:14:34.net
rege*p

460:名無しさん@お腹いっぱい。
04/12/16 23:14:21.net
正規表現で複数の単語の中に「/」があるときにヒットさせたいんですが

echo "hoge / hoge" | grep "\</\>"

でだめでした・・。だれか修正をお願いしますorz


461:名無しさん@お腹いっぱい。
04/12/16 23:50:35.net
>>456
条件をもっと明確に定義しろ。
マルチすんな。

462:456
04/12/17 00:16:01.net
>>457

複数の単語の中で、"/"のみで構成される単語が存在する場合のみ
ヒットさせたいのです

つまり
a b c / d
上記ようなときで下記のどの事象にもヒットさせたくはないのです
// /a a/ a/a



463:名無しさん@お腹いっぱい。
04/12/17 01:22:18.net
>>456
スレリンク(linux板:957番)
とこっちと、どっちで続けるのかね。

464:名無しさん@お腹いっぱい。
04/12/17 11:17:13.net
まことに勝手ながらこちらで続けさせてください
質問を改めます
やりたいことは
-----------------------
1) echo "/" | grep ......
2) echo "/ a b" | grep ......
3) echo "a b /" | grep ......
4) echo "/a / b/" | grep ......
-----------------------
上ですべてマッチさせて
以下はすべてはじくようにしたいのです
-----------------------
5) echo "//" | grep ......
6) echo "// /// ////" | grep ......
7) echo "/a b/ /c/" | grep ......
-----------------------
上と下の違いは、前後にスペースを含む" / "が存在するか否かです

よって以下のように考えましたが、ヒットしませんでした
echo "a / b"|grep "\</\>"
echo "a / b"|grep "\<\/\>"

どなたか修正をおねがいしますorz


465:名無しさん@お腹いっぱい。
04/12/17 11:22:35.net
>>460
grep と言ってもいろいろあるんだが
どの OS のどの grep よ。

466:456
04/12/17 11:23:16.net
↑修正します

修正前)上と下の違いは、前後にスペースを含む" / "が存在するか否かです

修正後)上と下の違いは、単語 / が存在するか否かです

467:名無しさん@お腹いっぱい。
04/12/17 11:27:31.net
>>460
> 上と下の違いは、前後にスペースを含む" / "が存在するか否かです
1) と 2) には存在しないようだが。

468:名無しさん@お腹いっぱい。
04/12/17 11:28:10.net
>>462
「単語」とは?

469:名無しさん@お腹いっぱい。
04/12/18 00:00:37.net
ブラケットの中でピリオドを入れる時ってメタキャラクタとして扱われますか?

[\w.]

[\w\.]
が同じ動きにになるみたいなんですけど・・・。

ちなみに、パールです。


470:名無しさん@お腹いっぱい。
04/12/18 02:48:16.net
>>465
「みたい」じゃなくてテストコードで示してよ。

471:名無しさん@お腹いっぱい。
04/12/18 08:58:34.net
どの言語の正規表現がどんな有限オートマトン使ってるという情報って
どこかにありますかねぇ。正規表現コンバータ作ろうかと思ってるのですが。。

NFA、DFAの違いぐらいは詳説正規表現の本でわかるのですが、実装ともなると。
オートマトンの変換に関してはコンパイラの本を参考にしてますが、
やはりかなりつらいものがありますね。たんに字句解析して作った方がいいのかなぁ。

472:名無しさん@お腹いっぱい。
04/12/18 09:16:42.net
普通にNFA+DFAでいいじゃん

473:名無しさん@お腹いっぱい。
04/12/21 02:13:26.net
オブジェクト指向正規表現の仕様策定はまだですか?

474:名無しさん@お腹いっぱい。
04/12/21 14:44:45.net
>>469
聞いたことないな。
何それ?

475:名無しさん@お腹いっぱい。
04/12/21 19:26:19.net
>>469
まかせた。

476:名無しさん@お腹いっぱい。
04/12/22 19:35:55.net
お前らWinの.NETなんだが正規表現の質問をさせてくれ。

RegularExpressions.Regexで下の文字列を検索して<TD>から</TD>に分けたい。

string strHtml = "<TD>a</TD><TD>b</TD><TD>c</TD>"

Regex regex = Regex("<TD>.*</TD>");
MatchCollection matchcollection = regex.Matches(strHtml);

だと最長一致で "<TD>a</TD><TD>b</TD><TD>c</TD>"の1つのコレクション取得。

Regex regex = Regex("<TD>.*?</TD>");

だとやりたい "<TD>a</TD>", "<TD>b</TD>","<TD>c</TD>"の3つのコレクションが取得できる。

.*? の意味をアフォにも分かるように説明してくれ。
.*(任意の0文字以上)が?(あるかないか)だろ。
なんで思った通りに3つのコレクションが取得できるの?

477:472
04/12/22 19:38:29.net
*? つーのは最短一致という便利なキーワードなのか。
つまらん質問失礼しますた。

478:名無しさん@お腹いっぱい。
05/01/07 22:21:40.net
下がってるので、どれ一つ、とんちでも。
rubyでは
/aa+??/ =~ "a" => 0
emacsでは
"aa+??" =~ "a" => nil
さて、こうなってしまうのは、各々がどのようなオートマトンで
解釈されているからでしょうか。

479:名無しさん@お腹いっぱい。
05/01/08 07:36:53.net
emacsって最短マッチあんの?

480:名無しさん@お腹いっぱい。
05/01/08 11:15:48.net
ありましゅよー
URLリンク(www.cs.huji.ac.il)

でも、{m,n}? の最短マッチはないみたい…。

481:名無しさん@お腹いっぱい。
05/01/11 11:11:46.net
最短マッチに対応した grep ってある?

482:名無しさん@お腹いっぱい。
05/01/11 13:31:51.net
>>477
grep が最短マッチに対応してるかどうかが問題になるケースってある?

483:名無しさん@お腹いっぱい。
05/01/30 22:46:31 .net
[^ま]*まってかくのめんどくさい

484:名無しさん@お腹いっぱい。
05/02/26 05:47:57 .net
あげ

485:名無しさん@お腹いっぱい。
05/03/30 02:33:49 .net
up

486:名無しさん@お腹いっぱい。
05/04/19 17:08:07 .net
正規表現の実装っていろいろあることにやっと気づいた漏れorz

487:名無しさん@お腹いっぱい。
05/05/14 15:12:25 .net
ほしゅ

488:名無しさん@お腹いっぱい。
05/05/16 16:51:45 .net
abc xyzをaxbyczにしたいのですが

489:名無しさん@お腹いっぱい。
05/05/16 17:05:02 .net
s/abc xyz/axbycz/g

490:名無しさん@お腹いっぱい。
05/05/16 19:33:57 .net
ワロタ


491:名無しさん@お腹いっぱい。
05/05/16 19:34:25 .net
保守

492:名無しさん@お腹いっぱい。
05/05/17 22:45:20 .net
>>484
echo abc xyz |sed -e "s/^/%/; :ll; s/[%]\(.\)\(.*\) \(.\)\(.*\)/\1\3%\2 \4/; tll; s/%//;"

493:名無しさん@お腹いっぱい。
05/05/18 00:13:40 .net
うひょー

494:名無しさん@お腹いっぱい。
05/05/28 03:19:18 .net
うに厨として、% をめぐる動きに溜息出た…真剣にありがと 何重にも目が覚めた

495:名無しさん@お腹いっぱい。
05/05/28 05:32:41 .net
abc xyz でも
abcdefg ABCDEFG でもできるね。すげーや。

496: ◆2fmGY.thDg
05/06/02 22:17:25 .net
a

497:名無しさん@お腹いっぱい。
05/06/04 23:07:23 .net
('A`)

498:名無しさん@お腹いっぱい。
05/06/19 02:53:08 .net
Onigurumaを使っているんですが、
あるテキストデータがあります。
----- ここから
END

注釈 ○○○
注意 △△△
補足 ◎◎◎

TITLE
----- ここまで
という部分の、ENDの後の空白行からTITLEの前の空白行の部分(間の行)を削除して、
ENDとTITLEの間は1行だけの空白行にしたいです。
「END\s^[0-9a-zA-Z。-゜ぁ-んァ-ヶ亜-?]*\sTITLE」を指定してもマッチしないんですが、
これは私の正規表現の式が間違えているんでしょうか?
(複数行を1度に選択する方法を間違えている???)

499:名無しさん@お腹いっぱい。
05/06/19 03:13:31 .net
>>494
つーか、正規表現だけ見せられても判断できないと思うんだけど。
改行処理や文字コードのオプション設定はどうしてるかとかいろいろ情報が足りない。

500:名無しさん@お腹いっぱい。
05/07/13 09:25:56 .net
素直に、
~s/END(\s*.*?\s*)TITLE/END\n\nTITLE/sg;
じゃダメ?

501:名無しさん@お腹いっぱい。
05/07/13 13:15:24 .net
>>496
Oniguruma の質問なわけだが?

502:名無しさん@お腹いっぱい。
05/07/13 17:54:26 .net
…とは思ったのだが、Perl 互換らしーから、いーかなとw

てか、見つかるのむちゃくちゃ早いなww
事後ながら、oniguruma (ライブラリ)取りに行った

503:名無しさん@お腹いっぱい。
05/07/13 19:58:46 .net
>>498
> 見つかるのむちゃくちゃ早いなww
どういうこと?


504:名無しさん@お腹いっぱい。
05/07/17 23:17:41 .net
>494
> 「END\s^[0-9a-zA-Z。-゜ぁ-んァ-ヶ亜-?]*\sTITLE」を指定してもマッチしないんですが、
> これは私の正規表現の式が間違えているんでしょうか?
> (複数行を1度に選択する方法を間違えている???)

これのどこが、複数行を一度に選択しているの?


505:名無しさん@お腹いっぱい。
05/07/19 19:22:13 .net
>>500
ONIG_OPTION_MULTILINE (や REG_NEWLINE や RE_OPTION_MULTILINE など) をセット
しているかどうかで複数行選択できるかどうか変わるので、
そのへんを晒せばもうちょっと状況がわかると思うのだが、
元質問者はもう既にどっかいっちゃったのだろうな。

506:名無しさん@お腹いっぱい。
05/09/21 20:57:28 .net
正規表現で
○○ か ○○の場合と言うのはどう表現するのでしょうか?

Cで言う、 || のようなものです。

507:名無しさん@お腹いっぱい。
05/09/21 21:07:45 .net
テンプレに何もないんだなこのスレ。
このあたりで調べろ

URLリンク(www.kt.)


508:rim.or.jp/%7Ekbk/regex/regex.html



509:名無しさん@お腹いっぱい。
05/09/21 21:18:44 .net
\(>∀<\) キャー

510:名無しさん@お腹いっぱい。
05/09/21 21:58:13 .net
(;`∇´))))))))))) \(>∀<\) キャー

511:名無しさん@お腹いっぱい。
05/09/21 22:48:45 .net
俺ならこう→「\(○{2}\) か \1の場合」

512:名無しさん@お腹いっぱい。
05/09/21 23:46:20 .net
何気に正規表現本もラッシュだな。


513:名無しさん@お腹いっぱい。
05/09/22 00:19:11 .net
\([^ ]∀[^ ]*\)

AAみたいな正規表現を作りたいが難しい。

514:名無しさん@お腹いっぱい。
05/09/22 02:52:41 .net
つくれて�


515:驍竄I



516:名無しさん@お腹いっぱい。
05/09/23 23:15:15 .net
∀ がメタキャラになってくれると楽しいかも


517:名無しさん@お腹いっぱい。
05/09/26 20:32:51 .net
дも

518:名無しさん@お腹いっぱい。
05/09/28 14:54:06 .net
ネタキャラ


519:名無しさん@お腹いっぱい。
05/12/09 01:04:17 .net
純粋に興味の問題なんだけど、
「ある文字集合の要素が各1回ずつしか出現しない」という文字列は
正規表現で表現できる?

例えばA, B, Cの文字からなる言語を考えたとすると、
ABC ACB BAC BCA CAB CBAの6つの文字列にマッチする表現っす。

520:名無しさん@お腹いっぱい。
05/12/09 01:08:23 .net
文字集合の濃度が有限なら
単に | でつなげばいいな。

521:名無しさん@お腹いっぱい。
05/12/09 02:30:43 .net
いろは歌とか"a quick brown fox..."みたいなのにマッチさせる正規表現、
って書けば説明が早かったかもですね。

>>514
ひらがなの場合で47!個、アルファベットの場合で26!個の文字列を
|でつなぐってことになると思うんですが、やはりこれしか方法ないんですかね。
正規表現の長さは… アルファベットの場合でも約1京テラバイトか… orz

522:名無しさん@お腹いっぱい。
05/12/09 09:42:38 .net
>>513
[^A]*A[^A]* ではどうよ

523:名無しさん@お腹いっぱい。
05/12/09 09:53:24 .net
>>516
BBA にもマッチしちゃうんでは。

524:名無しさん@お腹いっぱい。
05/12/09 09:57:44 .net
>>515
> "a quick brown fox..."みたいなのに
o 2回出てるよ。

実用を考えたら正規表現以外でやった方がいいな。

525:名無しさん@お腹いっぱい。
05/12/09 19:50:27 .net
いろは歌って内容も傑作だよな。

526:名無しさん@お腹いっぱい。
05/12/09 21:53:37 .net
> o 2回出てるよ。

おお、32年生きてて初めて気が付いたっす。漏れの目はfusianasanさんだ… orz

> 実用を考えたら正規表現以外でやった方がいいな。

そうことになっちゃいますかね。みなさんレスどうもでした。

527:名無しさん@お腹いっぱい。
05/12/11 08:09:16 .net
Windowsで正規表現にマッチする文字列のみ(行全体じゃなく)を表示・保存するにはどうすればいいのでしょうか?
xyzzyとかのエディタのgrepでやろうとしたのですが、検索してもよくわかりません。
Rubyとかスクリプト言語を使わないと無理でしょうか?


528:名無しさん@お腹いっぱい。
05/12/11 08:13:57 .net
上すいません。書きこむスレ間違えました。(プログラム板の正規表現スレに書きこんだつもりでした。)

529:名無しさん@お腹いっぱい。
05/12/11 11:19:25 .net
ちょうど一回出るんなら何かの順序でソートして文字列が完全一致することをチェックかなあ

530:名無しさん@お腹いっぱい。
06/01/01 11:16:33 .net
エディターの正規表現で置き換えをしたいんですが・・・
1、2、3、・・・という連番を
(1) (2) (3)というふうに置き換えたいのですが
どうしたらよいでしょうか。

531:名無しさん@お腹いっぱい。
06/01/01 11:57:28 .net
まずは(ry

532:名無しさん@お腹いっぱい。
06/01/01 12:39:56 .net
置換元:[1-9]
置換先:(\0)
で、できるかもよ。

533:名無しさん@お腹いっぱい。
06/01/01 17:30:57 .net
>>526
だめでした。


534:名無しさん@お腹いっぱい。
06/01/01 19:50:58 .net
置換元:[1-9][0-9]*
置換先:\(\0\)
こんな風にすればできるのかな?
どんな風に駄目だったかわからないけれど。

535:名無しさん@お腹いっぱい。
06/01/01 20:02:16 .net
>>528
それもやってみましたが、検索はされるのですが、
置き換えが出来ません。(0)となってしまいます。
前回のは(となってしまいます。
エディターだから駄目なのでしょうか。


536:名無しさん@お腹いっぱい。
06/01/01 20:09:51 .net
\0のところを、
\1
$1
にしても同じかな?

537:名無しさん@お腹いっぱい。
06/01/01 20:13:18 .net
>>530
($1)となってしまいます。


538:名無しさん@お腹いっぱい。
06/01/01 20:17:25 .net
そのエディタの正規表現がreference(\1とか$1とか)をサポートしてないに1票。

539:名無しさん@お腹いっぱい。
06/01/01 21:27:04 .net
!(^^)!ピンポーンです。
ヘルプを見ていたら、referenceはサポートしていないと出ていました。
他のエディターを探すか、どうしたらいいでしょうか。


540:名無しさん@お腹いっぱい。
06/01/01 23:17:07 .net
続きです
結局QXエディタをダウンロードして使いました。
びっくりしたのはWindows上では
正規表現というのは全然一般的ではないんですね。
勉強しようにも正規表現サポート自体が脆弱だったんですね。


541: 【大凶】 3回目
06/01/01 23:32:29 .net
ググればなんぼでも出てきます。少し自分で考えなはれ。

542:名無しさん@お腹いっぱい。
06/01/03 22:49:27 .net
まあやることがハッキリ決まってるんなら、
(念の為)対象ファイルのカレントディレクトリのDOS窓を開いてsed、だな。

543:名無しさん@お腹いっぱい。
06/01/07 07:00:27 .net

{aaa}[bbb}{ccc}
という文字列から、aaa bbb cccをそれぞれマッチさせてとりだしたいので、

/¥{(.*)¥}¥{(.*)¥}¥{(.*)¥}/

としていましたが、
とりだしたい文字列のなかに、さらに{}がはいっていることがあることが
わかりました。
{aaa}[b{b}b}{ccc}
とか。
それぞれaaa b{b}b cccというかたちでとりだしたいのですが、どうしたものでしょうか。


544:名無しさん@お腹いっぱい。
06/01/07 10:07:50 .net
>>537
sedはそのままでok

545:名無しさん@お腹いっぱい。
06/01/07 14:56:41 .net
グループ化用のカッコにエスケープが必要だからsed「では」ダメじゃないの?
Perlならエスケープ不要なので大丈夫。

ところで>>537はテクニシャンだな。
navi2chで円マーク(¥じゃないほう)を表示させやがって…

546:名無しさん@お腹いっぱい。
06/01/07 15:36:35 .net
>>539
ヒント:}{

547:名無しさん@お腹いっぱい。
06/01/07 15:46:46 .net
いや、それは分かってるつもりだけど。
sedだと例えば{(aaa)}{(bbb)}{(ccc)}にマッチしちゃいますよってこと。

548:名無しさん@お腹いっぱい。
06/01/07 17:31:15 .net
>>541
じゃあ不必要な{}()を最初にスペースに変換してからマッチさせたら

549:名無しさん@お腹いっぱい。
06/01/07 18:58:38 .net
そんな必要ない。sedでも>>537のカッコをすべてエスケープすれば良い。
>>538の「sedは」というのが余分だっただけ。

550:名無しさん@お腹いっぱい。
06/01/12 05:55:00 .net
郵便番号をPHPで「1234567」から「123-4567」へ整形する正規表現を教えて下さい。

551:名無しさん@お腹いっぱい。
06/01/12 11:06:51 .net
>>544
【PHP】質問スレッドpart32【php】
スレリンク(php板)

552:名無しさん@お腹いっぱい。
06/01/13 16:59:36 .net
すいません。
--------------------------------
#hogehoge
fugafuga 1
--------------------------------
という風に行頭が#じゃないというのを正規表現で取得したいのですが
「ではない」というのが分かりません。
bashを用いております。
以上 ご助力をお願いいたします。

553:名無しさん@お腹いっぱい。
06/01/13 20:50:59 .net
>>546
grep -v '^#'

554:名無しさん@お腹いっぱい。
06/01/13 21:08:39 .net
>>546
grep '^[^#]'


555:名無しさん@お腹いっぱい。
06/01/13 21:29:57 .net
いつも思うけど、
[^#] 形式だと文字が存在してないときも除外してしまうので
面倒なことあるよね。
ディレクトリリストから
.
..
を除外しようと
[^.][^.].*
を使って一文字のファイル見逃すとか。

556:名無しさん@お腹いっぱい。
06/01/13 21:47:30 .net
>>549
その方が便利なこともある。

557:544
06/01/16 17:54:29 .net
ご教授ありがとうございます。
本当に助かりましたっ

558:名無しさん@お腹いっぱい。
06/01/22 02:37:32 .net
正規表現の正規表現ってどうかきますか?
ある値が正規表現の構文に沿っているかどうかを調べたいとき。

559:名無しさん@お腹いっぱい。
06/01/22 02:48:16 .net
入れ子があるから正規表現にはならない。
BNFを書けば3型文法に属さないこと分かるでしょ。

560:名無しさん@お腹いっぱい。
06/01/26 11:22:53 .net
いきなりすんません
2ちゃんねるブラウザ Jane Doe Style で正規表現検索を使おうとしたけど、書き方がいまいち分かりません。
F900i という文字列だけを検索して F900is や F900iT はヒットさせないようにするには、どう書けば良いですか
ぐぐってもいまいちわからないので。。。。

561:名無しさん@お腹いっぱい。
06/01/26 11:25:48 .net
板違い。

562:名無しさん@お腹いっぱい。
06/01/26 11:32:56 .net
スマンです。でもスレタイ検索してもほかに質問できそうな場所なかったんけどだめですか。

UNIX 085 正規表現 (553)
プログラム 408 正規表現part2 (102)
プログラマー 283 【Regular】正規表現【Expression】 (36)

563:名無しさん@お腹いっぱい。
06/01/26 11:36:10 .net
板違い。

564:名無しさん@お腹いっぱい。
06/01/26 11:49:12 .net


565:名無しさん@お腹いっぱい。
06/01/26 13:16:13 .net
>>554
Jane Doe Style とやらがどんな正規表現エンジンを使っているかにも
激しく依存する話なので、
まずはそのソフトのスレで聞いてみた方が良いと思う。

566:名無しさん@お腹いっぱい。
06/04/15 16:30:37 .net
(・∀・)

567:名無しさん@お腹いっぱい。
06/04/18 03:51:57 .net
onigruma... 気になる。名前が怖い。

568:名無しさん@お腹いっぱい。
06/04/18 09:54:32 .net
nekoguruma だったら弱そうだしな

569:名無しさん@お腹いっぱい。
06/05/02 22:56:16 .net
>>562
いろいろ運べそうじゃないか

570:名無しさん@お腹いっぱい。
06/05/29 20:29:06 .net
正規表現厨には
grep --color


571:名無しさん@お腹いっぱい。
06/05/31 19:33:06 .net
勉強ついでに554を考えてみた。精度に難がありそうですが、以下でどうだろう?

[^A-Zz-z0-9]*F900i[^A-Za-z0-9]*


572:成瀬 ◆NBGqNARUSE
06/06/16 03:35:29 .net
>>565
最低限試そう。"F900iS"=~/[^A-Zz-z0-9]*F900i[^A-Za-z0-9]*/ はマッチする。
ヒント: \W \b 否定先読み

573:名無しさん@お腹いっぱい。
06/07/25 12:40:49 .net
...
Doll ←ここから
\=\-\--\-``--`\=`-==\
\=-\=-\``\==`=`--`-=-

Egg
-=-\-=-\-\=-=--\=-=-=\
-=-\-=-=\=-=\=-=-\-=\- ←ここまで

Fruits
...

のときDoll~Eggの項目まで抽出するにはどうしたらいいですか?
/Doll/,/Fruits/ でおおまかには抽出できるけどもっと正確に抽出したいのです

574:名無しさん@お腹いっぱい。
06/08/09 21:11:53 .net
『詳説 正規表現 第3版』 が今月発売されるね。
邦訳版の出版は知らんけど。

575:名無しさん@お腹いっぱい。
06/08/10 13:32:24 .net
情報サンクス。
けど、洋書なら原書のタイトル表記でよろしく。
早とちりして必死で oreilly.co.jp と amazon.co.jp 探しちゃったよー。(←あほ)

576:名無しさん@お腹いっぱい。
06/08/10 21:53:00 .net
>>569
URLリンク(www.oreilly.com)

わざわざ、邦訳版の出版は知らんって書いたのになw

577:名無しさん@お腹いっぱい。
06/08/18 16:48:08 .net
URLリンク(oraclesqlpuzzle.hp.infoseek.co.jp)
正規表現の問題集らしい

578:名無しさん@お腹いっぱい。
06/08/18 17:01:57 .net
>>568
作者宣伝乙、
というのは冗談で、情報ありがと。
日本語版はいつ出るんだろ。

579:名無しさん@お腹いっぱい。
06/08/23 13:58:51 .net
立ち読みとか読んだうちに入らんと思われた。

580:名無しさん@お腹いっぱい。
06/08/23 17:31:35 .net
>>177
URLリンク(oraclesqlpuzzle.hp.infoseek.co.jp)
こんなのもあるみたいやね

581:名無しさん@お腹いっぱい。
06/10/05 15:46:12 .net
age

582:名無しさん@お腹いっぱい。
06/10/16 10:51:27 .net
ageとくか

583:名無しさん@お腹いっぱい。
06/10/17 01:00:23 .net
質問させてください。

正規表現を用いたgrepをするときに、
文字列"foo"を含まない全ての行にマッチさせるためには
どのように書けばよいのでしょうか。

584:名無しさん@お腹いっぱい。
06/10/17 01:13:12 .net
-v

585:名無しさん@お腹いっぱい。
06/10/17 08:26:14 .net
man に書いてあるよ。

586:名無しさん@お腹いっぱい。
06/10/17 08:26:50 .net
-v オプションを使わずに、正規表現上で「文字列"foo"を含まない」を表す方法を
聞いているんじゃないだろうか?

587:名無しさん@お腹いっぱい。
06/10/17 09:48:51 .net
(?!foo)

588:名無しさん@お腹いっぱい。
06/10/17 11:12:35 .net
>>581
今はgrepでの話をしてんだろ。

589:名無しさん@お腹いっぱい。
06/10/17 13:02:02 .net
>>577
否定先読み

590:名無しさん@お腹いっぱい。
06/10/17 13:37:52 .net
>>583
正規表現でできるものか!
先読み、後読み共に否定は貧弱

591:名無しさん@お腹いっぱい。
06/10/17 18:14:48 .net
「一致しない」はあらゆる箇所にマッチするからね
行単位の処理とは基本的に相容れないし

正規表現でなく、-vのようなメタレベルで対処するのが正解
sedとかでもいいな

592:名無しさん@お腹いっぱい。
06/10/17 19:17:42 .net
>>585
なんで、.*?(?!xxx) を、xxxが一切含まない行、と解釈してくれないんですかね?

593:名無しさん@お腹いっぱい。
06/10/17 19:55:43 .net
論理的に考えてみればわかるよ

594:名無しさん@お腹いっぱい。
06/10/18 09:59:12 .net
>>587
欲張りマッチだから、xxxが見つかった段階で一文字戻ってマッチにしちゃう?

595:名無しさん@お腹いっぱい。
06/10/18 11:10:22 .net
>>586
解釈するわけがない

596:名無しさん@お腹いっぱい。
06/10/20 10:45:16 .net
^(?!.*foo)
でできるだろ

スレリンク(tech板)l100
の1のサイトをよく読め

597:名無しさん@お腹いっぱい。
06/10/24 10:00:30 .net
正規表現でできることの仕様ってずっとこのままなんですかね。
括弧の対を考慮した表現とかって簡単にならないかな。

598:名無しさん@お腹いっぱい。
06/10/24 11:17:38 .net
処理系ごとに拡張してあったりするじゃん。

599:名無しさん@お腹いっぱい。
06/10/24 11:28:08 .net
hp-uxのgrep糞だなw
\< \>が使えん。


600:名無しさん@お腹いっぱい。
06/10/24 12:07:18 .net
grepツールで、htmlのコメント内を検索対象からはずしてgrepできるツールありますか?
コメントで死ぬほど引っかかって苦労してます。
複数行コメント中の真ん中ぐらいの行に引っかかっても、先頭に<!--がないから
普通のgrepツールだときびしいです。

601:名無しさん@お腹いっぱい。
06/10/24 12:13:02 .net
sedしかないだろ。


602:名無しさん@お腹いっぱい。
06/10/24 12:24:01 .net
-- の対応まで見ようとするとつらそうだ。

603:名無しさん@お腹いっぱい。
06/10/24 21:37:54 .net
複数行になると途端にわけわからんくなるな・・・。

604:名無しさん@お腹いっぱい。
06/10/26 05:24:59 .net
改行位置を変換する前処理をしてからやるとか

605:名無しさん@お腹いっぱい。
06/10/26 11:38:24 .net
コメントを
s/<!(?:--[^-]*-(?:[^-]+-)*?-(?:[^>-]*(?:-[^>-]+)*?)??)*(?:>|$(?!\n)|--.*$)//g
で取り除いてからgrepすればいいんじゃね?

606:名無しさん@お腹いっぱい。
06/11/03 14:20:22 .net
マルチで済まない。

同じ文字が3文字連続していたら表示したいのだが

607:名無しさん@お腹いっぱい。
06/11/03 15:02:08 .net
>>599
>s/<!(?:--[^-]*-(?:[^-]+-)*?-(?:[^>-]*(?:-[^>-]+)*?)??)*(?:>|$(?!\n)|--.*$)//g
この部分はsed?
だったら、その後もgrepなんかせずに、sedだけで完結すればいいじゃん。
awkでも同じく。


608:<sage>
06/11/10 19:30:45 .net
教えて下さい。

ダブルクオートで囲まれていない、コンマだけを置き換えたいのですが、
正規表現では、どうあらわせばいいのでしょうか?

例:
"aaa, bbb" xxxx, "ccc, ddd" yyyyyy

xxxx, <- このコンマを -> xxxx; とセミコロンにしたいです。

よろ

609:名無しさん@お腹いっぱい。
06/11/13 23:01:55 .net
>>602
スレリンク(tech板)l100
のリンク先嫁


610:<sage>
06/11/14 15:35:11 .net
>> 603
そのページのどこを読めと?

611:名無しさん@お腹いっぱい。
06/11/22 14:36:47 .net
>>604
ほぼ全部
雑魚には無理な正規表現ってこった

612:名無しさん@お腹いっぱい。
06/11/22 20:49:29 .net
氏ね

613:名無しさん@お腹いっぱい。
06/11/26 13:47:54 .net
>>602

◆関連サイト
正規表現メモ
URLリンク(www.kt.rim.or.jp)
Perl正規表現雑技
URLリンク(www.din.or.jp)
Regular Expression(Riue ちゃんの正規表現講座)
URLリンク(www.sixnine.net)
正規表現パズル
URLリンク(oraclesqlpuzzle.hp.infoseek.co.jp)
詳説 正規表現
URLリンク(www.oreilly.co.jp)
正規表現プログラミングFAQ
URLリンク(capslockabcjp.kitunebi.com)

これだけ読めば解決できるが
池沼には無理

614:名無しさん@お腹いっぱい。
06/12/04 14:18:49 .net
アルファベットの文字で構成されるが、「d」は入らない、を
[a-ce-z]以外の書き方で表現する方法はないですか?

もちろん↓はエラーだけど、こんな漢字で書ければいいのだけれど。

[a-z][^c]

615:名無しさん@お腹いっぱい。
06/12/04 19:22:18 .net
a|b|c|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z

616:名無しさん@お腹いっぱい。
06/12/04 22:02:59 .net
>>608
javaならできる

617:名無しさん@お腹いっぱい。
06/12/04 22:08:51 .net
d|i|g|i|t|a|l


618:名無しさん@お腹いっぱい。
06/12/05 09:35:00 .net
>>610
どうやるんだべさ?

619:名無しさん@お腹いっぱい。
06/12/06 02:45:07 .net
>>612
[[a-z]&&[^d]]
こんな感じだったと思う。


620:名無しさん@お腹いっぱい。
06/12/06 09:44:34 .net
>>613
うぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉ~、すげぇ~。できました!
javaだとこんなのができるのか!
もちろん正規表現標準じゃないので、perlとか秀丸正規表現ではできないかぁ・・・

javaならではの裏技って他に何かあるんですかね?

621:名無しさん@お腹いっぱい。
06/12/06 12:20:30 .net
>>614
うぉ++


622:名無しさん@お腹いっぱい。
06/12/06 12:23:51 .net
タイプ数増えてるのは問題ないのかw

623:615
06/12/06 12:51:07 .net
>>614
わざわざjavaで試した行動力に感服

強欲マッチといわれる615もためしてみるといい

624:名無しさん@お腹いっぱい。
06/12/06 13:11:31 .net
java使う人ならタイプ数が増えることが問なさそう

625:名無しさん@お腹いっぱい。
06/12/06 14:12:54 .net
>>615
うぉ+でいいんじゃないの?なんか違うの?

626:名無しさん@お腹いっぱい。
06/12/06 17:58:50 .net
(+_+;)

627:名無しさん@お腹いっぱい。
06/12/07 02:56:32 .net
>>619

違うよ。++が付いたほうはバックトラックしない。
Perlの (?> ...) と同じ。


628:名無しさん@お腹いっぱい。
06/12/16 17:28:28 .net
1~1000
までの数字から始まって最後が
C]
で終わる正規表現を教えて下さい
m(_ _)m

629:名無しさん@お腹いっぱい。
06/12/16 17:45:19 .net
^[0-9]\{1,4\}[^0-9]*C]$
かな?


630:名無しさん@お腹いっぱい。
06/12/16 17:55:45 .net
>>623
駄目でしたorz
正規表現の勉強してきます。
有難うございましたm(_ _)m

631:名無しさん@お腹いっぱい。
06/12/16 19:58:43 .net
^([1-9][0-9]\{0,2\}|1000)[^0-9]*C]$
こうか?


632:名無しさん@お腹いっぱい。
06/12/17 00:31:38 .net
タイトル:文字列 の文字列の部分だけを取り出したいのですが、
どのような正規表現にすれば良いのでしょうか?
よろしければ、ご教授を願います。


633:名無しさん@お腹いっぱい。
06/12/17 00:34:12 .net
いろいろ出ているようだけど
[0-9].*C]
ではダメな理由がわからない

634:名無しさん@お腹いっぱい。
06/12/17 00:52:14 .net
>>626
文..

635:名無しさん@お腹いっぱい。
06/12/17 07:34:54 .net
>>627
全然ダメ

0000C
がヒットする

636:名無しさん@お腹いっぱい。
06/12/28 11:54:55 .net
初歩な質問ですみませんが
[0-9a-zA-Z]で英数字にマッチするものとなると思うのですが
例えばajgko-jk-s1olのように「-」記号が入っているとマッチしません
どう記述すればよいですか?よろしくお願いします。

637:名無しさん@お腹いっぱい。
06/12/28 11:57:12 .net
>>630
[-0-9a-zA-Z]

638:630
06/12/28 12:01:22 .net
>>631
さんありがとうございます。
しかし上記のように記述しても読み込んでくれません・・・。
こう記述して[-0-9a-zA-Z]{10,10}
「BC-K-o58tB」これを認識してくれません。


639:名無しさん@お腹いっぱい。
06/12/28 12:09:19 .net
どのアプリ使ってんのよ

640:名無しさん@お腹いっぱい。
06/12/28 12:10:47 .net
>>632
ちゃんとマッチするけど・・


$ echo 'BC-K-o58tB' | egrep '[-0-9a-zA-Z]{10,10}'
BC-K-o58tB

641:630
06/12/28 12:11:07 .net
アプリ?良くわかりませんが言語PHPです。

642:名無しさん@お腹いっぱい。
06/12/28 12:11:52 .net
ならPHPのスレで聞いた方がいいんじゃね

643:630
06/12/28 12:16:40 .net
PHPのスレで聞いたら正規表現に行けと言われました。orz

644:名無しさん@お腹いっぱい。
06/12/28 14:04:02 .net
無限ループキタ━━━(゚∀゚)━━━ !!!!


645:名無しさん@お腹いっぱい。
06/12/28 21:33:37 .net
PHPだとPOSIX由来の正規表現とPerl互換の正規表現があるけどどっち?
後者を使っているならpreg_match('/[-0-9a-zA-Z]{10,10}/', $str)みたいに
正規表現の前後にスラッシュが必要。

646:名無しさん@お腹いっぱい。
06/12/29 11:07:30 .net
正規表現 part 3
スレリンク(tech板)


647:名無しさん@お腹いっぱい。
07/01/09 23:17:53 .net
始めたばっかりで、3時間かかってもダメです… お助けを。

()で囲まれる任意の文字部分だけをとりたいんですが、
\(..*\) では全然ダメですね… ()もついてくるし。

*****(ABC-_)(123%&)*****(あいう)***

上の例だと、以下の3つを取りたいです。
ABC-_
123%&
あいう

648:名無しさん@お腹いっぱい。
07/01/09 23:43:33 .net
>>641
sed -e "s/(.*)/()/g" でどうよ

649:名無しさん@お腹いっぱい。
07/01/10 00:12:39 .net
>>642
Unix版でしたね…
Windows系でのやり方を知りたいです。

650:名無しさん@お腹いっぱい。
07/01/10 00:19:56 .net
>>642
基礎からやり直せ。


651:名無しさん@お腹いっぱい。
07/01/10 01:41:33 .net
>>642
なんか冗長だが...

use strict;
use warnings;
while(<>){
  s{(?:[^(]*)\(([^)]*)\)(?:[^(]*)}{[$1]}g;
  print $_;
}

652:名無しさん@お腹いっぱい。
07/01/10 01:42:28 .net
>>643
Windowsにもsedは移植されてるじゃん。


653:名無しさん@お腹いっぱい。
07/01/10 01:59:51 .net
>>643
板違い。

654:名無しさん@お腹いっぱい。
07/01/18 10:55:44 .net
>>641
正規表現でググレカス

655:名無しさん@お腹いっぱい。
07/02/07 08:21:33 .net
すみません、以下の正規表現は何にマッチするんでしょうか?
([\011\012\014 -~]+\\|\\(\\cj\\|\n\\)+\\)
処理系はLispです。お願いします。

656:名無しさん@お腹いっぱい。
07/02/08 02:57:00 .net
>>649
LispつかEmacs Lispだろ。先頭に \\ が抜けてないか?

[\011\012\014 -~]+   タブかLFかCRかスペースかASCIIの表示可能文字の繰り返し

\\| または

\\(\\cj\\|\n\\)+  Cjって多バイト文字でいいんだっけ? か改行の繰り返し



657:649
07/02/08 15:45:20 .net
>>650
すみません、おっしゃる通り先頭に\\が抜けていました。
なるほど、どうもありがとうございました。

658:名無しさん@お腹いっぱい。
07/03/27 16:10:01 .net
コンマはエスケープする必要はありますか?

We are NOVA-TOMO\, right?

659:名無しさん@お腹いっぱい。
07/03/27 17:34:57 .net
必要ないと思った。付けても問題ないと思うけど。
むしろ?の方が…
俺詳しくないから何ともいえないけど

660:名無しさん@お腹いっぱい。
07/03/28 01:44:02 .net
カンマはどの正規表現でもメタ文字じゃないのでエスケープの必要はない。
むしろ >>653のいうとおりで ? が要注意。

grep/sed ならエスケープなしでOK。
egrep/awk/perl その他Perl互換のものなら要エスケープ


661:名無しさん@お腹いっぱい。
07/04/21 22:17:17 .net
当方、秀丸を使っております。
“・”で始まる文で、「」で囲まれた文をヒットさせるのにはどうすればよいのでしょうか?
どうしても、「」で囲まれる前の文章もヒットしてしまうのです。

662:名無しさん@お腹いっぱい。
07/04/21 22:55:33 .net
>>655
秀丸とやらはUnixで動くのかい?

663:名無しさん@お腹いっぱい。
07/04/21 23:03:01 .net
げ、UNIX版でしたか!
失礼しました。

664:名無しさん@お腹いっぱい。
07/05/04 12:21:16 .net
ニフティーのドメイン以外を拾う為に [^nifty]\.com と書くのは間違いのようですが

特定の“文字列”以外を指定するのはどーすりゃいいの?

665:名無しさん@お腹いっぱい。
07/05/04 12:44:28 .net
否定先読みなどの拡張があればそれを使えばいいが、なくても
それ以外の文字列をすべて列挙すればなんとかなります。


666:名無しさん@お腹いっぱい。
07/05/04 13:59:38 .net
grep -v '特定の文字列' filename


667:名無しさん@お腹いっぱい。
07/05/04 14:35:47 .net
正規表現の話では?

([^n]....|.[^i]...|..[^f]..|...[^t].|....[^y])\.com

これが正解

668:名無しさん@お腹いっぱい。
07/05/04 14:54:42 .net
nifty.com以外のナントカ.comにマッチさせたいのだから、

([^n].*|n[^i].*|ni[^f].*|nif[^t].*|nift[^y].*)\.com

ではないか?

669:名無しさん@お腹いっぱい。
07/05/04 14:56


670::11 .net



671:名無しさん@お腹いっぱい。
07/05/04 14:58:05 .net
それではniftyhoge.comにマッチしないので

([^n].*|n[^i].*|ni[^f].*|nif[^t].*|nift[^y].*|nifty..*)\.com


672:名無しさん@お腹いっぱい。
07/05/04 15:58:18 .net
perlならもうちょっと簡単?
perl -ne 'print if /(?<!nifty)\.com/'

grep -v とか否定を使うほうが素直だと思うけど。

673:名無しさん@お腹いっぱい。
07/05/04 16:31:54 .net
ヒネクレたひとたちばかりいるスレですから

674:名無しさん@お腹いっぱい。
07/05/04 16:44:04 .net
このスレの中くらいは正規表現原理主義でいいじゃないか

675:名無しさん@お腹いっぱい。
07/05/05 00:26:33 .net
その為のスレなんだから当然といえば当然だろ


676:名無しさん@お腹いっぱい。
07/05/21 19:09:39 .net
はふ

677:名無しさん@お腹いっぱい。
07/05/28 22:36:56 .net
-rwxrwxr-x 1 53 53 3504 May 22 2006 index.htm
drwxrwxr-x 4 53 53 4096 May 6 2006 common
drwxrwxr-x 2 53 53 4096 May 22 2006 tmp
drwxrwxr-x 2 53 53 4096 May 22 2006 image

↑から<属性>(-rwxrwxr-x)と<名称>(index.htm)の部分をグループ化で取り出したいのですが、どのようにすればよいのでしょうか?


678:名無しさん@お腹いっぱい。
07/05/28 22:48:40 .net
ここは実は分かってない奴しかいねーから無理じゃね?ww

679:名無しさん@お腹いっぱい。
07/05/29 00:05:12 .net
>>670
グループ化って言うのがよくわからんけど、パーミッションの部分とファイル名の部分だけ取り出したいなら

$ perl -e 'while(<>){ if(/^([^\s]*)\s*([^\s]*)\s*([^\s]*)\s*([^\s]*)\s*([^\s]*)\s*([^\s]*)\s*([^\s]*)\s*([^\s]*)\s*(.*)$/){ print "$1 $9\n"; }}' < test.txt
-rwxrwxr-x index.htm
drwxrwxr-x common
drwxrwxr-x tmp
drwxrwxr-x image
$

ぐらいからはじめればいい。

680:名無しさん@お腹いっぱい。
07/05/29 01:44:17 .net
確かにみんなもっとスマートに書けないものかねえ・・・

681:名無しさん@お腹いっぱい。
07/05/29 02:31:04 .net
^([^\s]+)(.*)([^\s]+)$

$1 $3


682:名無しさん@お腹いっぱい。
07/05/29 03:06:51 .net
(; ^ω^)

683:名無しさん@お腹いっぱい。
07/05/29 07:07:47 .net
むしろ正規表現使わないでreaddirとstat使うとこじゃないか?


684:名無しさん@お腹いっぱい。
07/05/29 15:00:33 .net
$ ls -al | sed -e 's/ \{1,\}/ /g' | cut -d ' ' -f 1,9

cut 使うのは反則?

685:名無しさん@お腹いっぱい。
07/05/30 16:06:37 .net
awk '{print $1,$9}'
で十分では無かろうかと

686:名無しさん@お腹いっぱい。
07/09/01 07:33:23 .net
gawkでJavaソースファイル内の「識別子」単位の置き換えをしようとしていますが,
なかなかうまくいきません.
たとえば,独立して現れる「Stack」は「Queue」に置き換えるが,
「argStack」は別の識別子だから「argQueue」とは置き換えず
そのままにしておくというものです.
Javaの識別子は[_0-9A-Za-z]の文字だけから構成されるとしています.
awk以外の選択肢も含めて,よい方法がありますでしょうか?
最終的には,Javaで置換プログラムを書けばできなくもないとは思いますが,
安直な方法があればお教えください.

687:名無しさん@お腹いっぱい。
07/09/01 08:57:42 .net
\< \> で囲っておくとか。

688:679
07/09/01 19:15:56 .net
grepの「-w」は普通にできるのに,いざ置換で同じことをしようとすると
難しいですね.
結局Javaで処理プログラムを書きました.ありがとうございました.

689:名無しさん@お腹いっぱい。
07/11/21 09:09:36 .net
hogeを含む行のうち^\s*'で始まらないもの
をgrepするのにvimでは
\(^\s*'.*\)\@<!hoge
でできるようなんですが、サクラで
(?<!^\s*'.*)hoge
とするとダメでした。
これをgrepするにはどうすればいいでしょうか?

サクラ(bregexp.dll)の正規表現はPerl5互換だそうなんですが。

690:名無しさん@お腹いっぱい。
07/11/21 09:53:00 .net
板違い。

691:名無しさん@お腹いっぱい。
07/11/21 11:08:21 .net
じゃあ
hogeを含む行のうち^\s*'で始まらないもの
にマッチするPerl5正規表現を答えよ。
とします。

692:名無しさん@お腹いっぱい。
07/11/21 11:28:24 .net
ム板行け。

693:情報工学ばが
08/01/15 20:48:47 .net
正規表現ってなんですか?

694:情報工学ばが
08/01/15 20:50:24 .net
はやく!!!
単位がないんです!!

695:情報工学ばが
08/01/15 20:51:45 .net
お願いします。。。

696:わし
08/01/15 20:55:01 .net
わしにはわからん。


697:名無しさん@お腹いっぱい。
08/01/16 01:21:45 .net
>>686
【サルにもわかる正規表現入門】
URLリンク(www.mnet.ne.jp)

698:名無しさん@お腹いっぱい。
08/01/16 12:24:11 .net
>>690
有難うございました。
おかげで単位取れそうやでー!!
ほな

699:名無しさん@お腹いっぱい。
08/01/17 00:37:01 .net
語り手緊急募集中!!

坐禅と見性第54章 片手の他人がたたく拍手の音
スレリンク(psy板)

【仏教】悟りを開いた人のスレ 10 【鬼和尚】
スレリンク(psy板)

【悟りで居る】悟りを開いた人スレ【完全お釈迦様派】
スレリンク(psy板)

萬福寺行った。1.2
スレリンク(kyoto板)

【茶の湯】  大徳寺について  【禅文化】
スレリンク(kyoto板)

臨済宗 大本山天龍寺 2
スレリンク(kyoto板)

【算盤】臨済宗 妙心寺派【金権】十五日は祝聖
スレリンク(kyoto板)

★★臨済宗・癖有り布教師さん★★
スレリンク(kyoto板)

臨済宗国泰寺派について
スレリンク(kyoto板)

臨済宗相國寺派について
スレリンク(kyoto板)

700:名無しさん@お腹いっぱい。
08/02/24 13:39:51 .net
2008-03 発売(予定)
「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳)
ISBN 978-4-87311-359-3 定価 5,040円


701:名無しさん@お腹いっぱい。
08/02/24 17:10:30 .net
バイト代が全部本で消えていく・・・

702:名無しさん@お腹いっぱい。
08/02/24 18:03:30 .net
あるある

703:名無しさん@お腹いっぱい。
08/02/26 14:03:08 .net
2/1 XXXXXXXX
2/2~2/5 XXXXXXXXX
2/7~2/8 XXXXXXX
2/12 XXXXXXXXXX
2/20~2/28 XXXXXXXXX

と書かれた行があり 今日より以前の日付の行を削除するにはどうすればいいですか

704:名無しさん@お腹いっぱい。
08/02/26 15:50:38 .net
それは正規表現の問題か?

705:名無しさん@お腹いっぱい。
08/02/26 17:23:03 .net
Cの構造体のようにネストする可能性のあるものを正規表現で抽出するにはどうすればいいでしょうか?

706:名無しさん@お腹いっぱい。
08/02/26 17:26:13 .net
無理

707:名無しさん@お腹いっぱい。
08/02/26 21:47:00 .net
>>699
正解

708:名無しさん@お腹いっぱい。
08/02/26 22:31:20 .net
>>696
日付の切り出しを正規表現でやって、日付の判定以降はプログラムでがんばれ。

709:名無しさん@お腹いっぱい。
08/03/06 14:24:40 .net
sedを使って
2007/1/2
2007/1/23
2007/12/2
2007/12/31
のデータを
2007/01/02
2007/01/23
2007/12/02
2007/12/31
にするにはどうすればいいですか



710:名無しさん@お腹いっぱい。
08/03/06 14:28:44 .net
sed -e 's,/1/,/01/,' -e 's,/2$,/02,'

711:名無しさん@お腹いっぱい。
08/03/06 17:14:22 .net
>>703
9日近く書き込み無いのによく質問に高速で答えられますね
尊敬するとともに変態だと思います。

712:名無しさん@お腹いっぱい。
08/03/06 17:15:08 .net
別に何日書き込みがなかろうが関係ない。

713:名無しさん@お腹いっぱい。
08/03/06 22:36:13 .net
>>704
今時ブラウザでみてる奇特な人かな?

別にこのスレを毎日人手でチェックしてるわけじゃなくて、
専ブラの巡回リストに入ってるだけのことだと思うよ。

まあ、確かに4分でレスするのはちょっとすごいが
よくよく見たら 2007/3/3 とかは変換しない...
ほんとにそれでいいのか? >>702

714:名無しさん@お腹いっぱい。
08/03/06 23:43:20 .net
>>703もわざとその答えにしたんだろ。
要するに質問の仕方が悪いって事だ。

715:ウサチャソ ◆/0IEZmXnQ6
08/03/17 21:53:04 .net
>>702
ゼロサプレス 正規表現
とか
ゼロパディング 正規表現
とかでググってみるといいかモナー
最近sedは使ってないから漏れはやり方知らんw

716:名無しさん@お腹いっぱい。
08/03/18 14:24:00 .net
どの文字列にもマッチしない正規表現ってどう書くんでしょう?

717:名無しさん@お腹いっぱい。
08/03/18 16:47:03 .net
(?<=a)a

718:名無しさん@お腹いっぱい。
08/03/19 09:09:37 .net
空文字列にもマッチしない?

719:名無しさん@お腹いっぱい。
08/03/19 23:02:47 .net
しないよ
というか自分で試せよ

720:名無しさん@お腹いっぱい。
08/03/21 00:44:43 .net
710って、aaにマッチするよ
戻り読みの位置が違うんじゃね?


721:名無しさん@お腹いっぱい。
08/03/21 20:07:35 .net
(?!a)a
こうかな

722:名無しさん@お腹いっぱい。
08/06/02 10:30:14 .net
Vimでファイルの中からhttpで始まり、htmlで終るURLを抜きだしたいのですが、
どのようにすれば可能でしょうか?
いろいろと試してはいるのですが、行中の最大にマッチする等なかなかうまくできません。

723:名無しさん@お腹いっぱい。
08/06/02 11:38:21 .net
最短でマッチさせたらさせたで、
ディレクトリのどこかに .html があると破綻する

724:名無しさん@お腹いっぱい。
08/06/03 08:27:21 .net
emacs(の置換)と
perlのそれぞれで、

「日本語の文字列」を指定する正規表現が知りたいのですが、
どこを見ればよいでしょうか?

「ASCII文字を含まない文字列」でもOKです。


725:名無しさん@お腹いっぱい。
08/06/03 13:33:02 .net
>>717
(info "(elisp)Regexp Backslash")
| `\cC'
| matches any character whose category is C. Here C is a character
| that represents a category: thus, `c' for Chinese characters or
| `g' for Greek characters in the standard category table.

というのがあるんだけど、C の説明が無いね。
\cj だった気がするけど、不具合があるかもしれん。

ASCII 以外だと、↓これはいかが?
(info "(elisp)Char Classes")
| `[:multibyte:]'
| This matches any multibyte character (*note Text
| Representations::).


726:名無しさん@お腹いっぱい。
08/06/03 14:36:53 .net
>>718

ありがとうございます。emacsのinfoではなく、
elisp infoにあるんですね。

「日本文字にはさまれたascii空白」を検索したかったので、

emacsでは"¥cj ¥cj" でだいたいよさそうです。

(どういうわけか
[:multibyte:]や[:nonascii:]
という指定は
C-u C-s などではうまく動いてくれないようなのですが・・・
(ascii文字の一部にマッチしてしまう)


727:名無しさん@お腹いっぱい。
08/06/03 14:41:33 .net
>>719
> (どういうわけか
> [:multibyte:]や[:nonascii:]
> という指定は
> C-u C-s などではうまく動いてくれないようなのですが・・・
> (ascii文字の一部にマッチしてしまう)

[[:multibyte:]] としんとだめやよ。

728:名無しさん@お腹いっぱい。
08/06/03 18:33:15 .net
あ、そういうことか!どもです。

729:名無しさん@お腹いっぱい。
08/09/04 15:15:43 .net
URLリンク(codezine.jp)
やたら難しいのですが。
詳説正規表現を読めば、解けるようになりますかね?


730:名無しさん@お腹いっぱい。
08/09/05 01:34:49 .net
>>722

難しいか? それ。


731:名無しさん@お腹いっぱい。
08/09/18 18:37:47 .net
>>722
プログラミングperlの正規表現の解説部分を
読んでもなんとかなるかも(´・ω・`)

732:名無しさん@お腹いっぱい。
08/09/28 20:34:23 .net
>>722
詳説正規表現は文字通り「詳説」。
正規表現を使うことが目的の人にはヘビーすぎる。


733:わいきむら
08/10/20 09:09:22 .net
空の文字クラス'[]'はどういう意味になりますでしょうか?
あと'-'が文字クラスの最後にある場合もダッシュとマッチせよ
という意味になるのでしょうか?

734:わいきむら
08/10/20 09:12:46 .net
すみませんダッシュじゃなくてハイフンですか

735:船木康博
08/10/20 09:14:08 .net
さーてと、
パソコンに於ける衛生面についてカキコして、
とりあえずここらでアクティブソナーにQSYするかなー♪

・VDT症候群に注意。
・腱鞘炎に注意。
・大音量による聴覚障害に注意。

マウスは玉の有り無しで、オスとメスがあるでよ。
光にも種類があるし、トラックボールもあるし。たまには玉の辺りの掃除でもしてやってくれ。
ボタンも林檎の1個や米窓の2個じゃなくて、SUNあたりなら3個あったんじゃねぇかなぁ。
最近じゃあ、ホイールも回転方向以外に左右に振れるのもあるでよ。

最後は、鍵盤だ。雑菌が繁殖して、便所より汚いモノもあるでなぁ。
病気移しちゃあいけねぇで、触らせる相手は自分で判断して制限しろよ。
おいもかはまぐり触った手かもしれねぇし、汁がとんでるかもしれねぇからな。

736:名無しさん@お腹いっぱい。
08/10/21 02:39:30 .net
>>726

中身が空の [] はわからんが、末尾のハイフンはその通り。
範囲指定じゃなくてハイフンそのものとして解釈される。


737:名無しさん@お腹いっぱい。
08/10/22 17:48:58 .net
質問させてください。

Fortranのコードから、「subroutine abc()」「 subroutine abs()」のような
サブルーチンの開始行だけをgrepで抽出したくて
grep ^\s*subroutine ./*.f90
と書いたのですが、「 subroutine」で始まる行がマッチしていないようです。
どのようにしたらこれをマッチさせられるか教えてください。

ちなみに、コード内には
「! subroutine abc()」「!subroutine abc()」なども含まれています。

738:730
08/10/22 19:23:26 .net
>>730どなたか、ほんとお願いします!!

739:ウサチャソ ◆/0IEZmXnQ6
08/10/22 21:00:29 .net
>>730
' とか " で括ってないとか?

話逸れるけど、grep は egrep が一番速いらしいよ。
egrep は「(・∀・)イイ!! 」grep!
なんっつってw

はぁ~…

740:730
08/10/22 21:25:28 .net
>>732そのとおりでした。

grep "^\s*subroutine" ./*.f90
としたらうまくいきました、ありがとうございます。


.....なんでこんなことに.....orz orz orz

741:名無しさん@お腹いっぱい。
08/10/23 03:40:28 .net
「(・∀・)イイ!! 」grep!

742:名無しさん@お腹いっぱい。
08/11/08 14:16:27 .net
ムズいなこれ

URLリンク(codezine.jp)
URLリンク(codezine.jp)


743:名無しさん@お腹いっぱい。
08/11/15 20:26:45 .net
機能的にegrepのが遅そうな気がするけど

744:名無しさん@お腹いっぱい。
08/11/19 14:37:34 .net
>>735
正規文法(正規言語)には定義があるけど
正規表現に「数学的に厳密な定義」は存在しないと思うんだけどねー
まあ>>51でがいしゅつだったからどうでもいいや


745:名無しさん@お腹いっぱい。
09/04/26 16:15:06 .net
教えていただけますでしょうか。

1(文字列A)文字列B

というものを
(文字列A)文字列B

にするのはどう書けばよいのでしょうか。
文字列A、文字列Bとも長さは不規則です。

746:名無しさん@お腹いっぱい。
09/04/30 17:32:03 .net
sed 's/^.//'

747:名無しさん@お腹いっぱい。
09/04/30 17:38:33 .net
すみませんが詳しい方のみ回答をお願いします

748:名無しさん@お腹いっぱい。
09/04/30 18:41:27 .net
日本語や英語など特定の文字列をgoogle検索のリンクにしたいです。
例えば、「正規表現」という文字列をgoogleのリンクにしたい場合だと、

正規表現(せいきひょうげん、regular expression)とは、
文字列の集合を一つの文字列で表現する方法の一つである。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
<a href="URLリンク(www.google.co.jp)">正規表現</a>
(せいきひょうげん、regular expression)とは、
文字列の集合を一つの文字列で表現する方法の一つである。

としたいです。ただし
・繰り返し1語1語適用することで複数の単語をリンク化する
 または一発で複数の単語をリンク化する方法でもいい
・すでにリンクされているものを二重にリンクしない
・タグ内の文字列はリンク化しない
・英語は文章内の単語が完全一致すればリンク化し、
 日本語は部分一致したらリンク化する
・英語の連語には対応しなくていい。
・リンク化したい文字列が「正規」「正規言語」などのように
 「正規」⊂「正規言語」という関係のものは想定しない
使う言語はAWK、Sed、Perlのいづれかとする。

お願いします。

749:名無しさん@お腹いっぱい。
09/04/30 19:14:08 .net
その質問は正規表現スレで扱う範囲を越えてます。

750:名無しさん@お腹いっぱい。
09/05/18 22:21:54 .net
8桁の10進数を文字列とみなしたとき、
下2桁が"00"でない文字列をヒットしたい。如何すればよいか?

751:名無しさん@お腹いっぱい。
09/05/18 22:33:28 .net
[0-9]{6}[1-9]{2}

752:名無しさん@お腹いっぱい。
09/05/19 08:56:24 .net
[1-9][0-9]{5}([0-9][1-9]|[1-9][0-9])

753:名無しさん@お腹いっぱい。
09/06/03 22:23:08 .net
正規表現でアルファベット6文字というのはどう書けばいいでしょう?

[A-z][A-z][A-z][A-z][A-z][A-z]

これじゃださいですよね?

754:名無しさん@お腹いっぱい。
09/06/04 09:42:14 .net
[A-z]{6}

755:名無しさん@お腹いっぱい。
09/06/04 09:57:06 .net
[A-z]だと[\]~_`を含むよ。[A-Za-z]{6}にしなはれ

756:名無しさん@お腹いっぱい。
09/06/04 10:22:05 .net
POSIX 正規表現が使えるなら [[:alpha:]]{6} とか。

757:名無しさん@お腹いっぱい。
09/06/04 10:29:36 .net
POSIX文字クラスはロケール依存の罠があるから避けた方が無難と思う

758:名無しさん@お腹いっぱい。
09/06/05 02:21:52 .net
POSIX 文字クラスって [[:isalpha:]] みたいのを言うんじゃなかったっけ?



759:名無しさん@お腹いっぱい。
09/06/05 02:23:34 .net
おっとなんか馬鹿なこと書いてしまった。

[a-z] も locale でどうマッチするかかわったりするよ?


760:名無しさん@お腹いっぱい。
09/06/13 13:28:45 .net
ホント? \w とかなら変わると思うけど、
[a-z] は locale に依らず ASCII コードの範囲になるのでは?

761:名無しさん@お腹いっぱい。
09/06/17 02:14:08 .net
書き込み禁止されてた。

>>753
どのUNIXでもそうなるとは断言できないけど、locale が en_us.UTF-8 とかのときに
a-z が aAbB….yYz な集合になるものもあるよ。

POSIX的には コード順だと定義はしてはいなかったはず。



762:名無しさん@お腹いっぱい。
09/06/17 08:44:18 .net
文字列の範囲はロケールに依存する。例えば、エストニア語のアルファベット
では、s の後に z があり、その後は t、u、v、w、x、y と続くので、[a-z] で
はすべての小文字のアルファベットにマッチしない

763:名無しさん@お腹いっぱい。
09/06/22 05:54:23 .net
うふふ

764:名無しさん@お腹いっぱい。
09/06/25 21:28:07 .net
>>754
それはlocaleの問題でもOSの問題でもないだろ
例えばlgrepはデフォルトがcase insensitiveだし


765:名無しさん@お腹いっぱい。
09/06/26 17:56:44 .net
>>757
問題が理解できてないようだな。君は話に加わらなくて良いよ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch