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


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

正規表現 Part6



1 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 00:36:04 ]
正規表現(Regular Expression)スレです。

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

【 前スレ 】 正規表現 Part5
pc12.2ch.net/test/read.cgi/tech/1212498448/

357 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 01:11:44 ]
>じゃないのか?
って。
そうして質問を質問で返すんだろ。
よっぽど自信がないのか。
なんかバカっぽい。

358 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 01:12:25 ]
>じゃないのか?
って。
どうして質問を質問で返すんだろ。
よっぽど自信がないのか。
なんかバカっぽい。

359 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 10:11:15 ]
いま、ものすごくバカっぽいレスを目にした気がした。

360 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 11:21:38 ]
>どうして質問を質問で返すんだろ。
「質問を質問で返すな」と言い切る自信はないらしい。

361 名前:355 mailto:sage [2009/08/26(水) 11:28:27 ]
>>356
ご返信ありがとうございます。
試してみたのですが、期待した動作にならなかったです。


362 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 12:28:28 ]
>>357
ろくに回答もせず、人のレスに難癖付けるだけ、か…

哀れだな


363 名前:355 mailto:sage [2009/08/26(水) 14:10:51 ]
あれから、色々自分で試行錯誤して

/#{2}([A-F|0-9]{4}#{2})/

でヒットするところまでは持っていけました。
後はなんとかなりそうなので、がんばってみます。
なんだかスレが荒れてしまったみたいで申し訳ありません。

364 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:19:43 ]
おかしいのがはりついてるせいだから、あんま気にせず。

365 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:26:40 ]
PHPはよう知らんが >>356 のでいけたよ。
# s/.../.../g とかは Perl 特有な演算子なのでそこらへんはよしなに

$str = preg_replace('/##([A-F0-9]{4})##/', '$1', $str);

これでどうですか?



366 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 14:55:40 ]
>これでどうですか?
って。
どうして質問を質問で返すんだろ。
よっぽど自信がないのか。
なんかバカっぽい。

367 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 15:17:15 ]
マジレスすると

(?:^|[^#])
##([A-F0-9]{4})##
(?:$|[^#])

368 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 15:28:42 ]
「これでどうですか?」は質問じゃないだろ。

369 名前:367 mailto:sage [2009/08/26(水) 15:54:37 ]
ん?
「####AF01##」のような文字列も置換していいのか。
条件反射してすまなかった。

370 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 16:36:03 ]
/#{2}([A-F|0-9]{4}#{2})/ の縦棒(|)は多分こういう意味では?と予想。

/#{2}([A-F]{2}[0-9]{2})#{2}/

371 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:08:01 ]
>>370
「対象データ」の「##A0F1##」にマッチしなさそう、とか。

372 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:40:08 ]
>>370
文字クラスの連結のつもりだったとエスパー。


373 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:46:50 ]
355です。

>>365
ありがとう!まさにこれが期待した動作です。
Perlに詳しくなかったのでPHP風に直せなかった自分の力不足で
動かなかったなどと言ってすみませんでした。

>>367
####AF01##は##「##AF01##」の部分だけ置換したいと思っています。
##は意味もなく使わせないようにしたいのですが、ユーザーがどういう意図で
使うかはわからない部分もあるのでそうしています。

後は答えていただいた方法をうまく組み込んでみます、ありがとうございました。



374 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:51:36 ]
>>372
A-F|0-9はうまい方法が思いつかなかったのでこうしてます。

要するにA-Fまでと0-9までの半角英数字4文字が続いている場合となります。
0CAFの場合もありますし、DA16など4文字は確定で入り乱れている状態です。

これをうまく表現する方法がわからなかったので
調べながら書いてみたら動いたのでとりあえずこれでやってました。

375 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:01:24 ]
>>374
[A-F|0-9]は、A-Fか0-9か'|'という意味だ。
つまり[|A-F0-9]や[A-F0-9|]も同じ意味になる。

おまえがやりたいことは[A-F0-9]で出来る。

まだ正規表現に慣れていないみたいだが、
Webアプリ開発では必須のスキルなので
これから勉強していくといい。

まずはフクロウ本を買うところから始めるべし。




376 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 19:23:33 ]
| は ( ) の中で使うときと { } で使うときでは意味が違う。
最近のガキは前後の文脈で判断せずに
ピンポイントだけ見て反応する。
悪いクセだ。

377 名前:誤字った mailto:sage [2009/08/26(水) 19:24:20 ]
| は ( ) の中で使うときと [ ] で使うときでは意味が違う。
最近のガキは前後の文脈で判断せずに
ピンポイントだけ見て反応する。
悪いクセだ。

378 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 19:38:26 ]
>>377
自己紹介?

379 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 19:40:23 ]
( ) の中ってなに。。

380 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 20:38:26 ]
{}かな。

381 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 23:33:37 ]
拗音の「ぁぃぅぇぉゃゅょァィゥェォャュョ」と促音の「っ」が複数個連続した場合にSAPI5を使うソフトウェアがハングアップします。
ところが「うわぁぁぁぁ」のような表現は日常的に存在しているためにそのたびにハングアップして閉口してます。
正規表現で小さい文字を大きくすることは可能ですか?


382 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 23:40:53 ]
ょぅι゛ょ

383 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 23:54:43 ]
s/ょぅι゛ょ/ 妖女/

384 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 23:57:31 ]
こすると大きくなるよ

385 名前:デフォルトの名無しさん mailto:sagesage [2009/08/27(木) 00:04:25 ]
こすったら膿出てきた



386 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 00:18:54 ]
淋しい病気ですか

387 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 00:32:52 ]
>>386
下手糞なツッコミ
もっと激しく!!

388 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 10:57:46 ]
>>381
s/ぁぃぅぇぉゃゅょゎァィゥェォヶャュョヮ/あいうえおやゆよわアイウエオケヤユヨワ/g

389 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 11:01:29 ]
性器表現だけじゃできなそうだな。

390 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 11:20:00 ]
tr/ぁぃぅぇぉゃゅょゎァィゥェォヶャュョヮ/あいうえおやゆよわアイウエオケヤユヨワ/

s/ぁ/あ/g
s/ぃ/い/g
s/ぅ/う/g
s/ぇ/え/g
s/ぉ/お/g
s/ゃ/や/g
s/ゅ/ゆ/g
s/ょ/よ/g
s/ゎ/わ/g
s/ァ/ア/g
s/ィ/イ/g
s/ゥ/ウ/g
s/ェ/エ/g
s/ォ/オ/g
s/ヶ/ケ/g
s/ャ/ヤ/g
s/ュ/ユ/g
s/ョ/ヨ/g
s/ヮ/ワ/g

391 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 18:29:07 ]
どうでもいいけどそれは SAPI5 とやらを直すべきではないのか?

392 名前:デフォルトの名無しさん [2009/08/27(木) 19:12:10 ]
マッチするなら電子メールアドレスである事が保証できる
正規表現を教えて下さい

393 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 19:24:33 ]
完全にやるのはひどくおおごとで、
かつルール違反のアドレスが結構ある。

とりあえず使えればいいのであれば、メールアドレス 正規表現 で検索

394 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 19:44:38 ]
DoCoMoもauも、ちょっと前までは連続ドット(RFC違反)の
メールアドレスが普通に作れちゃったから困ったもんだ。

395 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 19:52:12 ]
>>392

まずググる、という発想すらできない君にはこれがお似合いだよ

.+@.+





396 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 21:16:55 ]
>>391
「暗いと不平を言うよりも、すすんで明かりをつけましょう」

397 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 22:41:53 ]
>>395
それじゃあ
> マッチするなら電子メールアドレスである事が保証できる
を満たしてないだろ。

これなら条件を満たすだろ。

[a-z]{6,30}@gmail.com

398 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:53:56 ]
こっちの方がいい

[^@]+@gmail.com

399 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:58:02 ]
>>397-398
やりがちだよなぁ、\.comとかのエスケープ忘れ
しかもそうそう異常判定が起きないから潜在的なバグになりやすい

400 名前:397 mailto:sage [2009/08/28(金) 00:26:28 ]
>>399
ごめんなさい。反省します。

>>398
それだと「マッチするなら電子メールアドレスであることが保証できる」が満たせないよね。

401 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 00:57:19 ]
命題トリックだな

402 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 01:02:24 ]
連. はイケないとか
"に囲まれてるなら@も連.もおkとか
イカレてるわ

403 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 01:22:04 ]
正規表現だけでなんとかしようって方がイカレてるわ

404 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 09:38:08 ]
到達できないアドレスは電子メールアドレスとして保証されていると言えるの?

405 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 12:21:25 ]
一般的には言えないかもしれないけど、
そこはこのスレのお題の範疇を超えるんで、気にしなくて良いんじゃないかと思う。



406 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 12:30:48 ]
俺はKENT氏が使っているこれを利用してるけど

/[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/

407 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:25:52 ]
KENT氏(笑)

408 名前:デフォルトの名無しさん [2009/08/28(金) 13:30:29 ]
KENT氏()笑

409 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:39:48 ]
はいどうぞ ttp://www.din.or.jp/~ohzaki/mail_regex.htm

410 名前:デフォルトの名無しさん [2009/08/28(金) 13:43:16 ]
>>409
うんざりしたw

これはRFCが悪い。

411 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 14:27:48 ]
>>406
これはひどい。
local-partの記号類をまったく受け付けないじゃん。
Gmailの拡張アドレスが弾かれちゃうね。


412 名前:デフォルトの名無しさん [2009/08/28(金) 14:29:02 ]
>>411
「マッチするなら電子メールアドレスである事が保証できる 」
を満たせばおkなんじゃないの?

413 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 14:37:11 ]
極端な話だけど/foo@example\.com/も条件を満たすよ
>>397はそういうジョークだろう


414 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 15:24:14 ]
>>412
そういう意味ならなおさら >>406 はまるでダメでしょ。
電子メールアドレスでないものも余裕でマッチする。

415 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 15:27:38 ]
これはどうなん?

search.cpan.org/~rgarcia/perl-5.10.0-RC1/pod/perlfaq9.pod#How_do_I_check_a_valid_mail_address?



416 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 15:33:15 ]
>>415
ああ、俺もそれ使ってるわ。

日本語の解説はこれな。
ttp://blog.livedoor.jp/dankogai/archives/51189905.html


417 名前:デフォルトの名無しさん [2009/08/28(金) 15:40:45 ]
>>416
そのページにあるリンク先見てて思ったんだが
[.] とか [@] って何の意味があるんだろ。

ときどき目にするんだが。。

418 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:04:50 ]
>>417
[@]はあんまり意味がないと思うけど、[.]は\.を使うよりいい(見やすい?)と、Damian Conway先生が
言ってたような気がする。

419 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:16:48 ]
>>415
そこに書いてある、このモジュールを使えばいいんかな?

RFC::RFC822::Address -- RFC 822 style address validation. - search.cpan.org
search.cpan.org/~abigail/RFC-RFC822-Address-2009040601/lib/RFC/RFC822/Address.pm

420 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:43:24 ]
>>417
[@] は配列が展開されるのを防ぐのかな?

421 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:47:38 ]
>>409
ジョークか?

422 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 21:11:37 ]
Javaでも20行未満で書けるレベルの処理だろうに。

423 名前:デフォルトの名無しさん [2009/08/28(金) 21:23:59 ]
>>422
それもう面白くないよ。

424 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 22:58:46 ]
    /:::::::ヽ____/::::::::ヽ、
   丿 ::.__  .:::::::::::::  __  ::::ヽ_       ,. 、       /   /
  / /。 ヽ_ヽv /: /。ヽ  ::::::ヽ    ,.〃´ヾ.、  /  /
 / / ̄ ̄√___丶  ̄ ̄\  ::::| / |l     ',  / /
 | .:::::::::: / / tーーー|ヽ     ..::::: ::|r'´  ||--‐r、 ',   javaなら20行で書ける!!
 | .:::::.  ..: |    |ヽ   .,..ィ'´     l',  '.j '.    javaなら20行で書ける!!
 | :::    | |⊂ニヽ| |  'r '´         ',.r '´ !|  \
 | :    | |  |:::T::::| !  l!     ....:.:.:.:.:.:ヽ、   ,l    \
 \:    ト--^^^^^┤   ゝ、.,_ ---‐‐‐----ゝ、ノ

425 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 02:27:04 ]
ちなみにJavaなら20行未満で書けるぞ



426 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 07:51:01 ]
\ 地獄ですね

427 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 09:40:01 ]
「全然」が現れてから次の「。」までに「ない」「なく」「なかった」「ません」が来ない文にマッチさせるには?

428 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:41:16 ]
/全然(?!ない|なく|なかった|ません).*。/

429 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:23:45 ]
松来未祐と金田朋子のRADIOデコピンないと、ひぐらしのなく頃に、本当にすまなかったと思っている、うちのタマ知りませんか
等もマッチしなくなるよ

430 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:01:20 ]
>>429
字面だけで処理しようってんだから、そこまで気にしてやる必要は無いんではないか

431 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 22:57:51 ]
>>428
"全然勝負にならない。" にマッチしちゃうよ。

432 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 01:06:53 ]
全然問題ない
全然なくならない

433 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 01:21:30 ]
>>428
正規表現メモ
www.kt.rim.or.jp/~kbk/regex/regex.html#POSITIVELOOKAHEAD

「よくある勘違い」

434 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 01:32:27 ]
ツッコまれること前提で片手間に書いたのに、やっとツッコんでもらえたw

/全然(?!.*?(?:ない|なく|なかった|ません)).*?。/
これでどうだ

435 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 02:32:07 ]
キュウリを突っ込んで欲しいのか?
魚肉ソーセージを突っ込んで欲しいのか?



436 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 10:08:55 ]
全然((?!ない|なく|なかった|ません).)*。

437 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 21:27:07 ]
>>434 >>436
検索してみたら「全然参考にならないんだ、悪いけど。」にマッチしてる。

438 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 22:13:55 ]
>>437
Perl と Ruby で試してマッチしないんだけど、どんな正規表現エンジン使ってるの?

439 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 22:25:44 ]
>>437
お前のレス全然参考にならないんだ、悪いけど。

440 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 22:30:23 ]
>>438
これ。内部エンジンがどうなっているのかよく分かんない。
ttp://www.kotonoha.gr.jp/cgi-bin//search_form.cgi?viaTopPage=1

441 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 23:00:44 ]
>>427 = >>440 なのか?
>>1 をよく読んで出直せ。

442 名前:441 mailto:sage [2009/09/01(火) 23:09:11 ]
まあいいや。 >>427 = >>440 と仮定して。

>>440 のをちょっと試してみたけど、
「前後文脈の指定について」の後文脈の例を見るとわかるように、
「検索文字列」の直後のパターンを指定したい場合は、
文字列先頭のアンカを指定する必要があるみたい。
例えば >>436 のを参考にこんなんでいけるかと。

^((?!ない|なく|なかった|ません).)*。

443 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 23:16:52 ]
>>441
ごめんなさい。

>>442
おおお、できた。ありがとう。

444 名前:デフォルトの名無しさん [2009/09/04(金) 13:45:50 ]
お時間あればよろしくおねがいします

●正規表現の使用環境
.NET Framework 2.0
●検索か置換か?
置き換え
●説明
ランダムな文字列内に繰り返す言葉を1つにまとめたい
●対象データ
abcdddddde
こんにちちちちちちわ
!+++**!
●希望する結果
abcde
こんにちわ
!+*!

445 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 14:20:02 ]
>>444
s/(.+?)\1+/$1/g

ドトネトだとこんな感じか

Regex re = new Regex( @"(.+?)\1+" );
Console.WriteLine( re.Replace( "abcdddddde", "$1" ) );



446 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 14:23:20 ]
s/(.)\1+/$1/g
でもいいな

447 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:46:35 ]
>>445
ありがとうございます、なるほど・・・
PHPだけで他の言語や正規表現はサッパリで、助かりました

448 名前:デフォルトの名無しさん [2009/09/04(金) 23:55:59 ]
Javaでもやれ

449 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 00:56:44 ]
20行で書けるからな

450 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 09:38:25 ]
PHPでも20行で書けるな

451 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:33:57 ]
●正規表現の使用環境
PCRE7

●検索か置換か?
検索

●説明
HTMLマーク付けされていないURLを探したい

●対象データ
example1.com/ <a href="example2.com/">example2.com/</a> example3.com/

●希望する結果
example1.com/
example3.com/

452 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:55:22 ]
「けちなマッチング」ってもっと他の言い方ないの?

453 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 20:54:51 ]
けちなマッチング、という言い方は知らないのだけど、
非欲張りな繰り返しのこと? それとも逆に強欲な繰り返しのこと?

454 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 23:24:21 ]
最短一致とかいろいろな言い方あるね

455 名前:デフォルトの名無しさん [2009/09/17(木) 13:12:34 ]
●正規表現の使用環境
VBScript

●検索か置換か?
置換

●説明
ソースコードの関数を置換したい

●対象データ
1 FuncA(1,2,3)
2 FuncA(1,FuncB(2,3),4)
3 FuncA(1,"string2,3",4)
4 FuncA(1,2,3):FuncD(1,2,3)

●希望する結果
1 FuncC(3,1,2)
2 FuncC(4,1,FuncB(2,3))
3 FuncC(4,1"string2,3")
4 FuncC(3,1,2):FuncD(1,2,3)
とりあえず対になる()の特定方法が知りたいです・・





456 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 19:10:43 ]
正規表現以前に、単語単位でFuncA->FuncCを置換したら済む話じゃね?

457 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 19:59:50 ]
関数の仕様というか引数の順番も変更になってるっぽいからダメそう。

カッコのネストの深さを限定すればあるいは。






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

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

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