正規表現 Part9at TECH
正規表現 Part9 - 暇つぶし2ch412:デフォルトの名無しさん
12/02/08 15:23:49.04
悪いとも思ったのですが、ちょっと急ぎなので、、、

413:デフォルトの名無しさん
12/02/08 15:26:52.32
こんな感じか?
.+?>(.+?)<.*?span.*?>(.+?)</span>

414:デフォルトの名無しさん
12/02/08 15:28:25.60
そうだぞ、>>412さんは急ぎなんだから遅い奴なんか待ってらんねーんだよ

415:デフォルトの名無しさん
12/02/08 15:32:13.91
急ぎとかアンタ以外の人間にとってはどうでもいいことだ
ソースも腐ってるし
業務ですぐ必要だというなら金出してやってもらえばいいことだしな
俺ならタグ解析させるけどな

ソースがゴミに埋もれてるからできないというなら処理する前に掃除すればいいんだよ

416:デフォルトの名無しさん
12/02/08 15:33:11.08
業者っぽいなー、正規表現使わなくても出来ることだし時間無いならそうすればいいのに。
仕事をネットに下請けさせんなし。正規表現使わなくても出来ることなんで教える必要なしと判断した。

417:デフォルトの名無しさん
12/02/08 15:35:12.94
お前らマルチはスルーするって知ってる?
答えてもらえりゃ何でもいい、腐った奴らなんだから答えなくていいんだよ

418:デフォルトの名無しさん
12/02/08 16:02:30.57
>>413

これじゃ無理じゃね?

419:デフォルトの名無しさん
12/02/08 16:14:30.48
>>415

なんか嫌な事でもあったのか?

420:デフォルトの名無しさん
12/02/08 16:20:22.26
生きてて嬉しいことなんて正規表現が一発で通ったときくらいだよな

421:412
12/02/08 16:21:07.70
すいません
こんなに皆さんの気分を害するとは思いませんでした

422:デフォルトの名無しさん
12/02/08 16:28:24.36
向こうの返事よりこっちの質問のほうが早いっていうのはマナー的に残念。礼儀は大事だよ。

423:412
12/02/08 16:45:31.36
>>409

これ

$getHtml = "○○<img width="11" height="11" style="margin-right:11px;" border="1" src="URLリンク(aa.bb.cc)" alt="ii"> 2.22</span><span id="jj">(3.33%)</span>";

○○の部分が必要じゃね?あんまり詳しくないから勘だけど


424:412
12/02/08 16:49:48.81
途中で切れてしまいました。
すいません。
知り合いから(といっても相談できるような仲じゃないのですが)
423にあるような指摘を頂いたので
一応書かせていただきます。
もし気が向いた方がいらっしゃたら御教授願います。

$getHtml = "<span class="aaa"><span id="bbb"><img width="11" height="11" style="margin-right:11px;" border="1" src="URLリンク(aa.bb.cc)" alt="ii"> 2.22</span><span id="jj">(3.33%)</span>";


425:デフォルトの名無しさん
12/02/08 16:55:47.85
御教示

426:デフォルトの名無しさん
12/02/08 17:17:03.85
あれ、教授も合ってないっけ?

427:デフォルトの名無しさん
12/02/08 17:18:54.53
$pattern = "/<span class=\".*?\"><span id=\".*?\">(.*?)>(.*?)</span><span id=\".*?\">\((.*?)\)/s";

・・・じゃ駄目か、・・・駄目だろうなー

428:デフォルトの名無しさん
12/02/08 17:23:28.61
>>424

<span id="bbb"><img\s.*(?:\s|")src=".*((?:down|up)_[gr])\.gif".*>\s*((?:[1-9]\d*|0)(?:\.\d+)?)<\/span><span id="jj">\(((?:[1-9]\d*|0)(?:\.\d+)?%)\)<\/span>

429:デフォルトの名無しさん
12/02/08 17:33:14.51
>>426
あってる。ただしその場合、
「より親切丁寧にお母さんみたく優しく教えれ」
って意味になる


430:デフォルトの名無しさん
12/02/08 17:34:18.98
あはは

431:デフォルトの名無しさん
12/02/08 17:38:35.99
>>428

これだと
matches[1]の部分が間違ってないか?

432:デフォルトの名無しさん
12/02/08 17:46:16.90
もっと簡潔に書けそうだが

433:デフォルトの名無しさん
12/02/08 18:22:20.19
質問です。

ダブルクォーテーション(")に囲まれた文字列を検索する時
\".*?\"で検索できますが、これだと改行が除かれます。
文字列の中に改行を含める場合は、どのように記述すれば良いのでしょうか?


434:デフォルトの名無しさん
12/02/08 18:30:12.19
>>432
簡潔と手抜きは違うからな

435:デフォルトの名無しさん
12/02/08 18:32:40.11
>>433
ドットに改行を含めるオプション(使用言語ごとに異なる)を使うのがお手軽


436:デフォルトの名無しさん
12/02/08 18:32:45.27
>>433
\"[\s\S]*?\"

437:デフォルトの名無しさん
12/02/08 19:01:53.83
>>424
自演失敗のフォロー?

438:デフォルトの名無しさん
12/02/08 21:34:00.95
>>425-426
師弟がみっちり学問を教える時は「ご教授」も使うらしいが、
一般的な「教えて下さい」の時は「ご教示」を使うのが一般的。

日本語変換がイマイチというより、元の意味を知らずに使ってる人多数。
まるで昔の「独壇場」(正しくは独擅場)

439:デフォルトの名無しさん
12/02/08 23:14:23.93
独擅場(どくせんじょう)

440:デフォルトの名無しさん
12/02/09 04:17:14.62
>>438
三行目は重言じゃないか?

441:デフォルトの名無しさん
12/02/09 05:35:29.17
マルチのゴミクズが湧いてたのか
お前が食いっぱぐれてのたれ死んでも誰も困らないから
急ぎだとかそういう理由でマルチしてんじゃねぇよ池沼

442:デフォルトの名無しさん
12/02/09 06:06:08.62
XMLみたいなネストした構造って、
真面目にやろうとすると正規表現じゃ書けないよね。


と思ってたんだが、ちょっとググったら今はできるんだな
鬼車とか一部のエンジン限定だが。

443:デフォルトの名無しさん
12/02/09 08:29:51.51
何で環境限定してるんだ?
頭悪そう。

444:デフォルトの名無しさん
12/02/09 11:21:05.34
>>443
お前頭悪いってよく言われるだろ

445:デフォルトの名無しさん
12/02/09 12:12:33.88
マルチの正規表現何故かうまくいかん
意外と難しいのかこれ?
それともなんか勘違いしちゃってるかなー

446:デフォルトの名無しさん
12/02/09 12:31:24.29
まったりいこうぜ

447:デフォルトの名無しさん
12/02/09 13:57:18.33
>>445
がんばりなよ

448:433
12/02/09 14:17:58.36
>>435,436
レスありがとうございます。

ブランクも検索対象に含めますので、>>436ではできないのでは?

449:445
12/02/09 14:44:54.26
できねー!!
後は任せた!

450:デフォルトの名無しさん
12/02/09 14:53:31.96
>>427

</span>を<\/span>にしないと
とりあえず駄目だろ

451:デフォルトの名無しさん
12/02/09 14:58:02.81
>>449

出来るやつ、今、居ないんじゃね?
俺はわからん

452:デフォルトの名無しさん
12/02/09 15:13:48.19
マルチポストはスルーという鉄の掟に従ってるだけ。

453:デフォルトの名無しさん
12/02/09 15:26:35.93
頭固いなー

454:デフォルトの名無しさん
12/02/09 15:33:38.16
>>423は二重引用符エスケープしてないけどいいのかな

455:デフォルトの名無しさん
12/02/09 16:04:26.65
やべえ、思いのほか全然できねえ
イライラしてきた

456:デフォルトの名無しさん
12/02/09 18:36:29.49
Twitterにでも書いてろゴミ

457:デフォルトの名無しさん
12/02/09 18:44:19.86
正規表現を覚えればいいだけなのになんで人に聞こうとするんだろう。学習能力無いのかな。

458:デフォルトの名無しさん
12/02/09 20:01:51.00
●正規表現の使用環境
wxWidets (wxRegEx)

●検索か置換か?
検索

●説明
一行の中に丸括弧で閉じられた文字列を検索したい。
丸括弧が出てくる位置や数は不定です

●対象データ
(2012年2月)北海道で撮影。(raw)で保存。猫と一緒(雄)

●希望する結果
(2012年2月) (raw) (雄)

(\\(.*?\\))で検索すると、"(2012年2月)"だけ検索されます。
(\\(.*?\\))(?:.*)(\\(.*?\\))(?:.*)(\\(.*?\\))で検索すると(2012年2月)(raw)(雄)が検索されます。
ただ括弧の位置が変わった場合には、この正規表現では検索にかからなくなります。

サクラテキストエディタ等の正規表現で検索すると、(\\(.*?\\)) 文章内にいくつ括弧文字列があっても
すべて検索されています。

正規表現でどのように書けばいいのか、それとも、プログラム上で検索しているのかわかりません。
どのように実現しているかまったくわかりません。

考え方などをおしえてくださいませ。

459:デフォルトの名無しさん
12/02/09 20:08:47.09
>>458
よく似た質問をwxWidgetsのスレで見たばかりの気がするが?
ループで回せ。

460:デフォルトの名無しさん
12/02/09 21:28:51.69
ループで回して掲示板のURL一覧から一行ずつ書き込んでいったのがこの結果

461:デフォルトの名無しさん
12/02/09 21:30:25.21
●正規表現の使用環境
linux 2.6系 grep / Scientific Linux 6.1

●検索か置換か?
検索

●説明
IPアドレス(xxx.xxx.xxx.xxx IPv4)にヒットさせたい

●対象データ
192.168.0.1
255.255.255.0
999.999.999.999(注:IPアドレスとして許容されていない)

●試した正規表現
"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

今回の検索では目視で判別できましたが、
999.999.999.999←これにヒットしてしまう等、致命的な部分があります。

ご教示いただければ幸いです。


462:デフォルトの名無しさん
12/02/09 21:35:47.84
それって正規表現だけでは無理だろ。
割り当てを正確に知る必要がある。
追加で、使う時点で生存しているのか確認するルーチンなども。

463:デフォルトの名無しさん
12/02/09 21:39:30.67
最大3桁で三桁あるときの先頭を1,2しか許容しないとかなら
[12]?[0-9]?[0-9]

で検索できるけど、199はいいけど299は許容しないとかまでいくとめんどくさくなるね。

464:デフォルトの名無しさん
12/02/09 21:40:19.09
これが無効なIPだという情報はどこから入手した?どれを有効と判定するかで式が変わる。

999.999.999.999

465:デフォルトの名無しさん
12/02/09 21:42:53.51
一桁目と次の.だけ書く。後は最初の1を0にして適当につないで。
[1-9]|¥([1-9][0-9]¥)|¥(1[0-9][0-9]¥)|¥(2[0-4][0-9]¥)|¥(25[0-6]¥)¥.
hostmaskも含めるなら最初は1じゃなくて0。

466:デフォルトの名無しさん
12/02/09 21:43:05.70
IPアドレス一覧【whoisサーバ一覧】
URLリンク(www.cman.jp)


世界の国別 IPv4 アドレス割り当て済み個数
URLリンク(nami.jp)


国/地域別 IP アドレス割り当てリスト - fetus
URLリンク(fetus.k-hsu.net)

467:デフォルトの名無しさん
12/02/09 21:48:32.33
>>455
がんばりなよ

468:デフォルトの名無しさん
12/02/09 21:50:03.94
>>462
あ?

469:デフォルトの名無しさん
12/02/09 21:55:34.74
こういうのをIPと見なすのかって事だ。


000.*IANA - Reserved(予約済み)

127.*IANA - Loopback

224.*Multicast IANAマルチキャスト

240.*Future use (将来のために予約済み)

URLリンク(www.cman.jp)

470:デフォルトの名無しさん
12/02/09 21:57:09.78
ある国や地域に割り当てられたとしても、それが実際に割り当てられてるかは判らない。

471:デフォルトの名無しさん
12/02/09 22:20:28.58
>>464
IPv4のアドレスは32ビットを8ビットごとに区切ったものだからそりゃ無効だ。

472:デフォルトの名無しさん
12/02/09 22:26:41.67
スクリプトと組み合わせた方が早いよ

473:461
12/02/09 23:11:29.53
単純に
0.0.0.0 ~ 255.255.255.255
の範囲であればIPv4アドレスとして有効と思っていました。

linuxなんで、grep結果を出力したテキストを整形するだけでも十分実用に耐えるかもしれません。

行数が多い場合は、やはりスクリプトの方が良さそうですね。
今回はこれでcloseにさせて下さい。

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

474:デフォルトの名無しさん
12/02/09 23:15:22.98
すでに0.0.0.0 ~ 255.255.255.255が全て有効だったら
新規の企業や大学はアドレス取得できなくなってるだろ。
枯渇は問題になってるが、満杯でもない。

475:デフォルトの名無しさん
12/02/09 23:24:30.10
別に規格上有効かどうかがわかればいいんじゃ……。

476:デフォルトの名無しさん
12/02/10 00:31:24.10
>>469
予約済みのIPアドレスは、IPアドレスの形式として有効じゃないって言いたいのか?

>>461って単に
> IPアドレス(xxx.xxx.xxx.xxx IPv4)にヒットさせたい
ってだけだよな。

477:デフォルトの名無しさん
12/02/10 00:43:55.70
んーと、getaddrinfoは IPアドレスの数値表記とホスト名両方OKだからさ
正規表現使わずに直接アドレス引けばいいんでないの。
そんでエラー返ればアドレス入力エラー。

478:デフォルトの名無しさん
12/02/10 00:50:06.05
(?<1>[012]?[0-5]?[0-5])(?:(?<1>[.][012]?[0-5]?[0-5])){3}
こんな感じではだめでしょうか?

479:デフォルトの名無しさん
12/02/10 00:57:44.53
>>459
質問したの私です。
最短マッチの場合、ループ処理で検索するのですね。

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

480:デフォルトの名無しさん
12/02/10 03:45:27.97
>>478
だめすぎじゃね

481:デフォルトの名無しさん
12/02/10 03:47:14.37
>>445
鬼車ならjane bbsのreplacestrスレで聞くと正規表現の猛者達が答えてくれる。レベルはんぱねぇよ。

482:デフォルトの名無しさん
12/02/10 03:48:37.65
Jane総合掲示板
URLリンク(jane.s28.xrea.com)

ReplaceStr.txtを活用するスレ Part9
URLリンク(jane.s28.xrea.com)

483:デフォルトの名無しさん
12/02/10 03:53:02.33
マルチのは正規表現使わなくても出来るって言われてんのになんでまだ正規表現でやろうとしてんの。

484:デフォルトの名無しさん
12/02/10 08:09:33.72
java用の高速な正規表現ライブラリってありますか?
java.util.regexは遅いし
google RE2を移植してみたもののまるで使いものになりません。

485:デフォルトの名無しさん
12/02/10 08:18:35.88
すみません鬼車はネイティブをコールしているので除外でpure javaでお願いします。

486:433
12/02/10 08:41:06.95
>>435

>>ドットに改行を含めるオプション(使用言語ごとに異なる)を使うのがお手軽

調べてみたのですが分かりません。
Objective-cで、ドットに改行を含めるオプションは、どのように指定すれば良いのでしょうか?
(「"」で囲まれた改行、スペースを含む文字列を検索する場合)


487:461
12/02/10 10:26:45.56
>>478
まったくヒットしなくなりました。出発点よりデグレーションしてます!


488:デフォルトの名無しさん
12/02/10 11:12:59.04
>461

これはどう?

●3-6 IP(0以上255以下の整数)を検索
URLリンク(www.geocities.jp)

489:デフォルトの名無しさん
12/02/10 11:29:36.22
>>483

それぞれ事情とかはあるだろ

490:デフォルトの名無しさん
12/02/10 11:58:05.30
>>486
どう調べたの

491:デフォルトの名無しさん
12/02/10 12:52:06.74
>>490
そんなこと聞いてどうするんだよ

492:デフォルトの名無しさん
12/02/10 13:00:57.44
自分で調べるやつはこんなとこに質問しないぞ

493:デフォルトの名無しさん
12/02/10 13:40:00.68
[0-5]はどうなのよ?
192.168.0.1 がアウトじゃん

494:デフォルトの名無しさん
12/02/10 15:26:34.28
(?:(?<1>[2]?[0-5]?[0-5])|(?<1>[01]?[0-9]?[0-9]))(?:(?<1>[.]([2]?[0-5]?[0-5])|(?<1>[.][01]?[0-9]?[0-9]))){3}

こんなかんじ?

495:デフォルトの名無しさん
12/02/10 15:29:05.76
>>465でほぼ答え出てるじゃん。
\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\.

496:デフォルトの名無しさん
12/02/10 15:52:44.88
回答者の能力的にあそこから答えを導きだすのは難しかったのだろう。
その前後のレスにもひどいものがあるが。

497:デフォルトの名無しさん
12/02/10 16:22:05.03
ここには正規表現極めたつもりになってる素人がいるからなw

498:デフォルトの名無しさん
12/02/10 16:34:35.05
>>494
こういう正規表現一般についての質問ですが、
ターゲットを捕らえることができることは確かめられますが、それ以外のものも捕捉されて
しまうのではないか、という不安はどのように解消すればよいのでしょうか。

499:デフォルトの名無しさん
12/02/10 17:00:08.29
>>497

悪態はつくが質問には答えない奴とかな
あと自治気取ってる奴もか

お前、答えられないだけだろ、と

500:デフォルトの名無しさん
12/02/10 17:13:38.07
>>498
煮たような文字列で試験するしかないね

501:デフォルトの名無しさん
12/02/10 17:19:51.30
>>499
自己紹介乙

502:デフォルトの名無しさん
12/02/10 17:29:15.27
正規表現で足し算はできないでしょうか?

PHPのソースなんですが
array( 'start' => 10.000, 'end' => 10.166 ),
array( 'start' => 11.166, 'end' => 11.414 ),
array( 'start' => 12.414, 'end' => 14.559 ),
などと並んでる部分があり、これらの数値全部に1を足したいのですが

503:デフォルトの名無しさん
12/02/10 17:38:19.38
>>494
(?<1>...)をいっぱい並べて何をやりたいんだ?

504:デフォルトの名無しさん
12/02/10 17:45:37.09
>>498
正規表現の本とか読めば書いてあるから読んでね。本に書いてあることを何度も質問されても困るし。
URLリンク(d.hatena.ne.jp)
こんなグラフ作って論理的に考えると意図しない動作はしなくなるよ。もちろん正規表現を使いこなせてればだけどね。

505:デフォルトの名無しさん
12/02/10 17:47:56.50
キャプチャをサポートしたエンジンは遷移図の通りには動かない。
その通りに動くのはegrepとかごく一部のみ。

506:デフォルトの名無しさん
12/02/10 17:53:01.35
>>502
何をやりたいのかさっぱり分からん。
ソースコードの変換がやりたいのかな?
awkとかLL系の言語使った方がいいんじゃない?
UNIX上ならならシェルスクリプトスレに来い。

507:デフォルトの名無しさん
12/02/10 17:54:23.33
>>505
自分で作るんだから意図した通りの動作になるよ。なんでそんなことも知らない人が横から口出すの?

508:デフォルトの名無しさん
12/02/10 18:00:40.39
>>506
ごめん、わからなかった?
この例だと、これを
array( 'start' => 10.000, 'end' => 10.166 ),
array( 'start' => 11.166, 'end' => 11.414 ),
array( 'start' => 12.414, 'end' => 14.559 ),
...
こうしたい
array( 'start' => 11.000, 'end' => 11.166 ),
array( 'start' => 12.166, 'end' => 12.414 ),
array( 'start' => 13.414, 'end' => 15.559 ),
...

数値は色々なので、単純な置換じゃなく、任意の演算(ここでは1を足す、これは固定)をしたい

509:デフォルトの名無しさん
12/02/10 18:12:54.80
うーん、答えが来ない...
これでもちょっとレベル高すぎたかも?

510:デフォルトの名無しさん
12/02/10 18:19:54.24
試しにTwitterで質問レスのURL貼って教えてって流したら20分で回答きた
やっぱりTwitterは早い
2chは遅いから情弱しか使ってないだろうし
情弱が高度情報に回答できないのは当然

511:デフォルトの名無しさん
12/02/10 18:20:43.03
ruby -ne'print $_.gsub(/\d+\.\d+/){|e|e.to_f+1}' < SRC
array( 'start' => 11.0, 'end' => 11.166 ),
array( 'start' => 12.166, 'end' => 12.414 ),
array( 'start' => 13.414, 'end' => 15.559 ),

512:デフォルトの名無しさん
12/02/10 18:21:48.51
キチガイがわいたか

513:デフォルトの名無しさん
12/02/10 18:22:47.99
結果をはりそこねた

Twitterってそんないいものなのか。始めようかな

514:デフォルトの名無しさん
12/02/10 18:33:11.72
まあでも2chみたいに欲しい情報にまつわる話題を扱うスレにフラっと寄って回答を待つようなことはできないけどね。
欲しい情報を手早く得られる環境の構築・維持に手間がかかる。

515:デフォルトの名無しさん
12/02/10 18:35:39.46
俺もTwitterやってるけど、始めてすぐには回答なんか全く来なかった。
あれってフォロー・フォロワー増えるまで結構時間が必要。(1か月2か月とか)
ただそれがある程度のラインを超えると便利になる。
だから1度きりの質問なんかだと2chのほうが回答もらえる率は高いけど
今後しばらくプログラミングやって情報交換が必要ならTwitter推奨。

基地害はブロックできるし。

516:デフォルトの名無しさん
12/02/10 19:05:23.31
ツイッターは情弱や馬鹿には不向き

517:デフォルトの名無しさん
12/02/10 19:17:13.07
馬鹿や情弱には不向きだが利用者の大半は馬鹿と情弱

518:デフォルトの名無しさん
12/02/10 21:42:58.05
>>517=馬鹿で情弱

519:デフォルトの名無しさん
12/02/11 00:36:51.48
>>486
URLリンク(php.net)
s (PCRE_DOTALL)
この修飾子を設定すると、パターン中のドットメタ文字は改行を含む全ての文字にマッチします。
これを設定しない場合は、改行にはマッチしません。 この修飾子は、Perl の /s 修飾子と同じです。
[^a] のような否定の文字クラスは、 この修飾子の設定によらず、常に改行文字にマッチします。

つまりPerl準拠の正規表現実装であればオプションやフラグ等に関係なく、
"[^"]*"
で改行コードをまたいだ検索ができるはず

520:デフォルトの名無しさん
12/02/11 04:32:56.23
さすがPHPer

521:デフォルトの名無しさん
12/02/11 21:26:16.26
性器表現

522:デフォルトの名無しさん
12/02/11 21:44:24.30
■□■□■□
□■□■□■
■□■□■□
□■□■□■
■□■□■□
□■□■□■

523:デフォルトの名無しさん
12/02/11 22:50:46.67
嵐の番組ってCMが生理用品ばっかでワロス

524:デフォルトの名無しさん
12/02/12 00:45:38.90
ああ、なるほどなw
言われてみれば生理用品CMに一番適した番組だなw

525:デフォルトの名無しさん
12/02/12 01:07:46.56
/[^a-z]/は半角英字以外という意味ですが、
/^[a-z]/ってどんな意味なんですか?


526:デフォルトの名無しさん
12/02/12 01:10:22.61
>>525
行頭にa,b,...y,zがある行にヒット。

カッコ外の ^ は行頭の意味。
[^words]はwordsという文字の否定。

527:デフォルトの名無しさん
12/02/12 01:13:19.46
>>526
ありがとうございます

528:デフォルトの名無しさん
12/02/12 01:55:21.24
さらっと嘘教えるなw


529:デフォルトの名無しさん
12/02/12 02:59:09.01
>>528
何が嘘なんだよ

530:デフォルトの名無しさん
12/02/12 03:07:42.54
>>1すら読んでないゴミの>>525にまともに答える必要なんかないんだからいいだろ嘘でも

531:デフォルトの名無しさん
12/02/12 04:09:57.63
>>525は何で環境書いてないの? 基地害?

532:デフォルトの名無しさん
12/02/12 04:55:15.49
>>529
誤解するなんてばかだなぁと思うならまだしも、
どこが誤解されたのか理解できないのはまずいよ


533:デフォルトの名無しさん
12/02/12 07:20:37.51
/aac^defg/

534:デフォルトの名無しさん
12/02/12 09:22:53.89
/[a-z]^/の^でも行頭という意味になるのか
文字クラスの説明なのにのwordsという単語を角カッコの中に含めるセンス
a,b,...y,zという表記が唐突に出現する(a,b,...,y,zならともかく)

さらっと嘘というツッコミが入らなかったらもうこのスレ開かないところだった

535:デフォルトの名無しさん
12/02/12 09:28:08.31
>>534
ああ、まあ誤解を生む表現でごめんね…

そこまで言うならきっちり回答書いてよ('A`)

536:デフォルトの名無しさん
12/02/12 10:13:29.42
>>535
こちらもきつく書きすぎた。ごめん
とりあえずこのスレからは卒業するわ

537:デフォルトの名無しさん
12/02/12 11:15:37.62
>>529
>>526
>カッコ外の ^ は行頭の意味。
>[^words]はwordsという文字の否定。
w、o、r、d、sという1文字ずつの否定と書かないと
質問者は誤解するでしょ
(上記の正規表現は、Edwords以外にもsordやwやoやrやdやs等にもマッチしない)

ごく希に[^(words)]で2文字以上の文字列の否定ができる正規表現実装もあるらしいけど、
Perl準拠ではない極めて例外的な実装

538:デフォルトの名無しさん
12/02/12 11:32:57.78
perl準拠じゃないと例外かよw

539:デフォルトの名無しさん
12/02/12 11:42:33.23
PCRE以外はカス

540:デフォルトの名無しさん
12/02/12 11:53:23.29
regux「君たち、

541:デフォルトの名無しさん
12/02/12 12:01:59.23
>>537
>ごく希に[^(words)]で2文字以上の文字列の否定ができる正規表現実装もあるらしいけど、
そんな変態的なの実在するのか?

542:デフォルトの名無しさん
12/02/12 12:08:26.69
環境も書いてないのにレスできるのがすごいわ

543:デフォルトの名無しさん
12/02/12 12:41:19.79
>>537
嘘はいいすぎだろ、わかりづらいだけ
しかも、あの時点で嘘の内容を書かなかったら嘘なのか本当なのか判断できなくて迷う奴が必ず出てくる

544:デフォルトの名無しさん
12/02/12 13:25:34.35
>>543
>>533

545:537
12/02/12 13:30:03.00
同調しただけで私は>>528ではありません

にしてもプログラム板にIDがないのはなぜでしょう
自演で盛り上げる意味のない板だし
無責任な投稿が増えるだけではないかと

546:デフォルトの名無しさん
12/02/12 14:11:57.84
特定IDに粘着する池沼がいるからだろ
一度粘着されると24時過ぎるまでつきまとわれる

547:デフォルトの名無しさん
12/02/12 14:57:08.09
>>543
>>526も迷ってたね

548:デフォルトの名無しさん
12/02/12 15:42:13.98
こんなの初心者用のサイト読んでれば分かってるはずの内容。それを人に聞くことがそもそも間違ってる。
そんな人の相手はしなくていいよ。嘘書くのはまずいと思うけど。

549:デフォルトの名無しさん
12/02/12 15:46:51.85
嘘書くのもありだと思うよ。つかむしろ推奨。
ネットで他人に聞けば何でも解決とか思ってる情報乞食のゴミは一回痛い目をみるべき。

550:デフォルトの名無しさん
12/02/12 18:10:16.39
よし、情報乞食にウソを教えて痛い目にあわせるサイトをつくろう

551:デフォルトの名無しさん
12/02/13 15:30:36.27
>>550
それもありだと思うよ。最近は関連書籍の1冊も買わずにネットで十分とか言うゴミがいるからな。
情報は何でもタダで手に入るのが当たり前と思ってる貧乏人は一度痛い目をみるべき。

552:デフォルトの名無しさん
12/02/13 15:32:11.00
>>550
すぐにはバレないけど後々効いてくるような嘘を書くんだぞ。

553:デフォルトの名無しさん
12/02/14 01:07:02.10
>>550
サイト読んで学習しようと思うような人はここにバカな質問したりしない。

554:486
12/02/14 10:37:31.73
>>519
レスありがとうございます。


555:デフォルトの名無しさん
12/02/15 12:57:50.64
性器表現

556:デフォルトの名無しさん
12/02/15 16:39:15.39
GUY出

557:デフォルトの名無しさん
12/02/15 22:15:15.09
性器をGUYが出してるのか

558:hidi and peter
12/02/16 23:00:17.96
(?![BCAA\.md]).*.mdとすると除外されるが
これって、たまたまなので気持ち悪いような気がする
[BCA\.md]でも同じ意味だしな

●正規表現の使用環境
PCRE (a.k.a PHP など 実際はApache)

●検索か置換か?
検索

●説明
特定のファイル名を除外する正規表現を書きたい(とりあえずは1つでいい)

●対象データ
ABCA.md
BCAA.md
CABA.md

●希望する結果

ABCA.md
CABA.md


559:デフォルトの名無しさん
12/02/16 23:16:14.43
人に頼む書き方じゃねえな、スルー。

560:デフォルトの名無しさん
12/02/17 00:14:04.83
(?!BCAA)[A-Z]{4}¥.md

561:デフォルトの名無しさん
12/02/17 03:18:38.64
全角きんもーっ☆

562:hidi and peter
12/02/17 21:26:44.99
> 559
知らなかったら、別に書き込まなくてもいいんだぜ。

> 560
ありがとう。'(?!sudo)\w{4}\.md' で、もうちょい便利に使えた。
pcretestで色々と試すと楽しいな。

563:デフォルトの名無しさん
12/02/18 00:03:16.80
●正規表現の使用環境
PHP5.3

●検索か置換か?
置換

●説明
ページ内にある<h2>~<h6>に対して内側に<span>を入れたいです。
hタグににclassがある場合なども想定されますがそれは引き継ぎたいです。
何卒ご教授お願いいたします。

●対象データ
<h2>あああああ</h2>
<h2 class="hoge">あああああ</h2>
<h2><span>あああああ</span></h2>
以下h6まで同様
<h6>あああああ</h6>
<h6 class="hoge">あああああ</h6>
<h6><span>あああああ</span></h6>

●希望する結果
<h2><span>あああああ</span></h2>
<h2 class="hoge"><span>あああああ</span></h2>
<h2><span>あああああ</span></h2>
以下h6まで同様
<h6><span>あああああ</span></h6>
<h6 class="hoge"><span>あああああ</span></h6>
<h6><span>あああああ</span></h6>

564:デフォルトの名無しさん
12/02/18 00:11:54.50
(<h[2-6][^>]*>)(?!<span>)(.*)(?<!</span>)(</h[2-6][^>]*>)
\1<span>\2</span>\3

565:デフォルトの名無しさん
12/02/18 00:46:49.73
>>563
classがある場合「など」もって何よ?
質問する側が仕様をあいまいにするとかありえない

566:デフォルトの名無しさん
12/02/18 00:49:05.49
最近質問者につっかかる奴が多いな
同一人物か?

567:デフォルトの名無しさん
12/02/18 00:52:55.18
なーいふみたいにとがあてわ
さーわるものみなきずつけたー

568:デフォルトの名無しさん
12/02/18 01:09:14.81
つっかかる奴が多いんじゃなくて>>563みたいなゴミが増えたんだろ
曖昧な仕様を提示するとかマジ知能障害

ゴミが増えたらゴミを片付ける奴が増えるのが自然
つっかかる奴を減らしたかったらまず>>563みたいな人間のクズを減らせ

569:デフォルトの名無しさん
12/02/18 01:23:46.84
答えてるやつがいるからいいじゃん。なんとかとハサミは使いよう。

570:デフォルトの名無しさん
12/02/18 01:28:45.66
>>564
ありがとうございました。

素人丸出しの質問で申し訳ありませんでした。
“など”と書きましたのはidやstyle等のclass以外の属性も考えられると思ったため、
つい曖昧な書き方になってしまいました。

571:563
12/02/18 01:30:45.70
メール欄に番号いれるとか、、、
知障と言われても仕方ない。
スレ汚し失礼しました。

572:デフォルトの名無しさん
12/02/18 03:01:24.21
いま秀丸エディタで正規表現使って
あれこれ修正しているけど
おすすめの、正規表現を搭載できるエディタってある?
秀丸よりも優れた奴

Eclipseはまた別。すでに使ってるので

573:デフォルトの名無しさん
12/02/18 04:27:54.67
正規表現ライブラリを変更できるやつか。
さくらは。

574:デフォルトの名無しさん
12/02/18 07:20:52.28
linuxでsed。

575:デフォルトの名無しさん
12/02/18 07:24:39.58
鬼車が使えるエディタがあれば最強だろうけど知らないな

576:デフォルトの名無しさん
12/02/18 07:33:09.51
1. 概要
 Tatsuo Baba氏による正規表現ライブラリである Bregexp.dll 互換の正規表現ライブラリです。Windows アプリで Perl 互換の正規表現が使えるようになります。
 正規表現エンジンとして、鬼車 (Oniguruma) を改良した鬼雲 (Onigmo, Oniguruma-mod) を採用することにより、オリジナルの Bregexp.dll よりも高度な正規表現を使用できるようになっています。


2. 動作環境
Windows 98 / 2000 / XP / Vista (x86/x64) / 7 (x86/x64)
(Windows 95/ME/NT4 は動作未確認)
bregonig.dll または Bregexp.dll に対応したアプリケーション
作者が動作を確認したアプリケーションは以下の通りです。ただし、動作を保証するものではありません。
K2Editor r.1.5.7 Build 519 (k2regexp.dll)
JmEditor2 Version 2.0.25
サクラエディタ Ver. 1.6.4.0
Spam Mail Killer Ver.2.28
INCM version 1.23c
ttPage-R Ver.0.98r28
秀丸エディタ Ver7.00 + BRegIf.DLL v0,0,2,2
Speeeeed Ver1.43
URLリンク(homepage3.nifty.com)

577:デフォルトの名無しさん
12/02/18 10:37:23.75
>>576
高田さん、なんでトリップ使わないの?

578:デフォルトの名無しさん
12/02/18 10:44:15.91
>>577
どうして高田さんだと思うの?

579:デフォルトの名無しさん
12/02/18 13:45:36.73
秀丸のhmjre.dllで全角スペースをサロゲートペアで検索したいのですがどう書くのでしょうか?

580:デフォルトの名無しさん
12/02/18 15:53:38.83
>>579
全角スペースのUnicodeコードポイントは
U+3000だからサロゲートペアじゃないよ

581:デフォルトの名無しさん
12/02/18 17:15:43.60
秀丸の正規表現でx0aとか\uxxxxみたいな漢字で全角スペースを書く場合は
どう書けばよいのでしょうか?

582:デフォルトの名無しさん
12/02/18 21:50:14.41
>>563
いまさらだけど。
h2 -> h2><span
って置き換えればよかったんじゃ


583:デフォルトの名無しさん
12/02/18 22:04:13.43
>>582
>hタグににclassがある場合なども想定されますがそれは引き継ぎたいです。

584:デフォルトの名無しさん
12/02/18 22:39:16.21
>>581
秀丸はライセンス持ってないから試せないけど、
\x8140
\x{8140}
\x81\40
\u3000
のどれかでマッチしませんか?

585:486
12/02/18 22:43:49.73
>>554
それで上手く行きましたでしょうか?
もしかしたら正規表現よりもC言語やobjectiv-cの言語仕様が優先されて
ダブルクォートをエスケープするか
ダブルクォートを\x22のような16進コード指定すべきだったかもと
今更ながらに気になってます

586:デフォルトの名無しさん
12/02/18 23:03:10.90
>>583
ああ、引き継ぎたいってそっちだったのか。てっきり挿入するspanに引き継ぐのかと勘違いしてた。
例も見ずにすまんかった。

587:デフォルトの名無しさん
12/02/18 23:07:20.02
>>584
\u{3000}で出来ました!ありがとうございます

最後にこの全角スペースが3000っていう数字になる事はどうやって調べられますか?

588:デフォルトの名無しさん
12/02/18 23:34:51.97
>>587
>\u{3000}で出来ました
本当に出来たのか?
この記法は文字クラス内限定のはずだが...

589:デフォルトの名無しさん
12/02/18 23:39:09.69
>>587
Windows使ってるならIMEパッドでも見れるし、テキストファイルをバイナリエディタで見てもいいし、
URLリンク(www.unicode.org) に行ってもいい(これを見るならIMEパッドで十分ともいえるけど、本家なので)

590:デフォルトの名無しさん
12/02/18 23:51:45.21
>>588
はい、ちゃんと[]野中に書きました

591:デフォルトの名無しさん
12/02/18 23:53:32.21
>>590
ありがとうございます

592:584
12/02/19 00:14:44.44
>>587
ごめん\x81\40は誤記なので
\x81\x40
でももう1度試してみて

あと秀丸にはステータスバーに、
カーソル位置のコードポイント表示機能があるみたいだよ
(この画面ショット見る限りではU+形式のUnicodeコードポイント表示されるのかはわからないけど)
URLリンク(hide.maruo.co.jp)

593:デフォルトの名無しさん
12/02/19 00:40:16.13
>>592
多分、581はshift-jisのコード表記はしたくないんじゃないの。
hmjre.dllだと同じ文字を表していても意味が異なるよ。
ex
[\u{3000}-\u{3005]}] //unicode順の範囲指定[ -々]
[\x81\x40-\x81\x58] //shift-jis順の範囲指定[ -々]


594:デフォルトの名無しさん
12/02/19 00:41:17.26
おっと、]がひとつ余分だった

595:デフォルトの名無しさん
12/02/25 16:38:53.37
●正規表現の使用環境
C#

●検索か置換か?
置換

●説明
りんご=20 以外を削除したい

●対象データ
みかん10 りんご20 バナナ30
いちご40 めろん20 りんご20

●希望する結果
りんご20
りんご20

よろしくお願いします

596:デフォルトの名無しさん
12/02/25 16:41:10.77
こちらこそよろしくお願いします

597:デフォルトの名無しさん
12/02/25 18:16:23.54
.*(りんご20).*
\1

598:デフォルトの名無しさん
12/02/26 03:09:03.64
それ複数に対応できてない

599:デフォルトの名無しさん
12/02/26 09:59:59.82
複数文字列の否定は(?!りんご20)みたいな否定先読みが
常套手段だけど、今回みたいな否定箇所以外を全置換には対処できないね

>>537のいう文字クラス内での否定文字のグルーピングが
C#(.net framework)の正規表現でも使えれば簡単なんだけどね

600:デフォルトの名無しさん
12/02/26 10:25:58.34
>>595
perlの正規表現ならワード境界の¥b使って

s/¥b(?!りんご20)¥S+[^¥S¥n]*//g

でいけるけどね。C#はわからん。


601:デフォルトの名無しさん
12/02/26 13:07:26.58
>>595
Regex.Matchesメソッドを1行ずつforeachで回して
マッチした単語を1行毎に連結していけば
とりあえず結果は同じになるんじゃないかと

・・・そういう妥協はだめ?

602:デフォルトの名無しさん
12/02/26 14:30:46.84
>>595
これ "りんご=20" と改行以外を削除だよね。
1行辺りの "りんご=20" の数を数えて "りんご=20" をn個並べる処理をforeachすればいいんじゃない?


603:デフォルトの名無しさん
12/02/26 17:38:21.92
正直一番簡単なのは
1:りんご20を他で使ってない文字か記号に置換
2:その文字以外全部空文字に置換
3:その文字をりんご20に置換
だと思うよ
なんでも無理に一回で済ますのがいいことなわけじゃないしさ

604:デフォルトの名無しさん
12/02/26 17:52:43.21
そもそも、 あおりんご20 の場合はどうなるのだ。

605:デフォルトの名無しさん
12/02/26 19:11:05.43
* おおっと *

606:デフォルトの名無しさん
12/02/27 18:34:09.00
問い合せフォームから来たメールアドレスを正規表現を用いて抽出したいのですが
秀丸メールを使っておりメール全文をテキスト化したものの中に以下の文章が含まれています

▼メールアドレス
aaaaaaaaaa@aaaaaaaaa.com

▼メールアドレスという文字列の下にある行だけを検索することは可能でしょうか?

メールアドレスにマッチする正規表現を使用するとヘッダー内のよくわからないアドレスまで抽出されてしまい
とても面倒くさいのでどうにか文章の下にある行のみを抽出という手段を取りたいのです

どうか解決策をご教授ください


607:デフォルトの名無しさん
12/02/27 18:45:49.84
(?<=^▼メールアドレス$\n)^.*$

608:デフォルトの名無しさん
12/02/27 22:49:40.74
>>607
レスありがとうございます

エディタは秀丸エディタを使用していまして
grebで教えて頂いた正規表現を入力すると

HmJre.dllの正規表現で前方一致/不一致"(?<!xxx)","(?<=xxx)"では改行文字を使うことが出来ません。

というエラーが出て思うように動作しませんでした・・・

609:デフォルトの名無しさん
12/02/27 23:07:03.41
(?<=^▼メールアドレス)$\n^.*$

改行も引っかかっちゃうけど検索するだけならいいかな

610:デフォルトの名無しさん
12/02/28 05:03:46.79
>>609
レスありがとうございます

あとで取り除くので改行も全然引っかかっていいのですが
(?<=^▼メールアドレス)$\n^.*$
で検索するとなにも検索に引っかかりませんでした

環境は
Win7 64bit
秀丸エディタ64 v8.13 Beta7
HMJRE.DLL v3.41
です

ああああああああああああああ
ああああああああああああああ

▼メールアドレス
test@test.com

いいいいいいいいいいいいいい
いいいいいいいいいいいいいい

元となる文章はこんな感じです
よろしくお願いします

611:デフォルトの名無しさん
12/02/28 06:11:47.05
>>610
秀丸の独自仕様をどこかで見たなあ...と思ったらここだったか
>>197-205あたりの
URLリンク(homepage3.nifty.com)
を参考にすれば何とかなるんじゃないかな

612:デフォルトの名無しさん
12/02/28 09:48:11.08
正規表現使うんなら秀丸はないわ。

613:607,609
12/02/28 19:47:54.11
秀丸は環境ないからわからん
詳しい人にまかせた

614:デフォルトの名無しさん
12/02/29 00:15:31.04
>>606
検索でいいの? Grepじゃなくて?
検索なら
(?#fulllinematch)(?\1)▼メールアドレス\n(.+)$
で可能。
ただし秀丸メールv5.70以降に限る。っつーか質問時はバージョン書くもんだぜ…

これはもう秀丸の独自仕様の話題なので、もし続きがあるなら秀丸スレへどうぞ。
スレリンク(software板)

615:デフォルトの名無しさん
12/02/29 00:16:23.90
>>614
こっちだった
スレリンク(software板)

616:デフォルトの名無しさん
12/02/29 00:18:13.93
>>610
ん、バージョン書いてあったのか…って秀丸エディタ? メールじゃなくて?
エディタ v8.13 なら (?#fulllinematch) 使えるがメールはどうだったかな…
連投スマソ

617:デフォルトの名無しさん
12/02/29 00:34:51.64
ここはプログラミング技術の板だから、
プログラミングそのものに関係ないアプリの使い方はアプリ板でやりなよ。
たとえプログラムをエディットするのだとしても。

618:デフォルトの名無しさん
12/02/29 02:43:04.02
皆様レスありがとうございます

>>614
ありがとうございます
(?#fulllinematch)(?\1)▼返信\n(.+)$
で検索対象とマッチすることは出来ましたが
Grepでその部分だけ取り出すということは出来ませんでした・・・

検索ではなくてGrepの対象としてマッチさせたいです

確かにプログラムに関係はありませんでした
>>614さんに誘導して頂いたスレでもう一度質問してみます
スレ汚し失礼いたしました

619:デフォルトの名無しさん
12/02/29 06:45:09.30
^URLリンク(live.nicovideo.jp)(lv[0-9]+)$

^URLリンク(live.nicovideo.jp)(co[0-9]+)$

これってひとつにまとまらない?

620:デフォルトの名無しさん
12/02/29 06:47:34.53
まとま

621:デフォルトの名無しさん
12/02/29 07:10:20.69
>>619
環境書こうぜ
環境不明だから最大公約数の正規表現
^http:\/\/live\.nicovideo\.jp\/watch\/(lv|co)[0-9]+$

622:デフォルトの名無しさん
12/02/29 07:53:10.90
C#のRegexですけど

623:デフォルトの名無しさん
12/02/29 21:20:22.34
>>622
後出しは困るんですけど

624:デフォルトの名無しさん
12/02/29 21:22:26.28
"^URLリンク(live.nicovideo.jp)((lv|co)[0-9]+)"

でいけたです。

625:デフォルトの名無しさん
12/02/29 21:53:01.50
やってやるです。

626:デフォルトの名無しさん
12/03/01 00:46:21.06
>>624
実害ないけど外側の括弧が無意味な件

627:デフォルトの名無しさん
12/03/01 01:00:16.49
>>624
.をエスケープしないとか見てるとイライラする
職場でこういう正規表現見つけたら速攻バグ登録するんだけど、
書いた奴は正常系でテストして問題なかったとか
自分の無知を認めない言い訳ばかり

628:デフォルトの名無しさん
12/03/01 01:06:37.19
バグレポートの仕方が悪いんだろ
ちゃんとどういう問題があるか認識させてやれよ

629:デフォルトの名無しさん
12/03/01 01:14:56.50
.NETだろ

630:デフォルトの名無しさん
12/03/01 01:45:00.45
>>626
外側はURLの可変部分だからいかにも後で参照しそうな箇所じゃないか
そこらへん質問では示されてないけど

631:デフォルトの名無しさん
12/03/01 19:16:48.23
>>630
その辺を考えてる人なら?:も使うよ
だからただの余分な括弧だと思う。

632:デフォルトの名無しさん
12/03/04 00:15:07.64
質問させてください、環境はWSH(JScript)です
2chのdatファイルは1行目が↓こうなってますが
名前<>メル欄<>日付 ID<> 本文 <>スレタイ 改行
スレタイだけを抜き出すにはどうしたらいいでしょうか?
↓こんなのしか浮かびません…
line = str.replace(/<>(.*?)$/,"$1");

633:デフォルトの名無しさん
12/03/04 00:17:53.46
それを実行したらどうなった?

634:デフォルトの名無しさん
12/03/04 00:26:17.22
>>633
一行丸々抜き出されました…

635:デフォルトの名無しさん
12/03/04 00:53:23.20
これで一応行けました、強引?
title = str.replace(/(?:.*?<>.*?<>.*?<>.*?<>)(.*?)$/,"$1");
もっといい方法あれば教えてください

636:デフォルトの名無しさん
12/03/04 01:01:21.24
>>635
^(?:.+?<>){4}(.+)$

637:デフォルトの名無しさん
12/03/04 01:12:39.05
>>636
ありがとうございます!

スレタイが空文字はありえないですよね、確かに
ただ、メル欄(名前も?)は空文字がありえるんですよ…

638:デフォルトの名無しさん
12/03/04 01:15:23.62
あ、これでいいのか。>>636さんありがとう
^(?:.*?<>){4}(.+)$


639:デフォルトの名無しさん
12/03/04 13:39:30.67
ほんと2chまとめ系の質問多いな。

640:デフォルトの名無しさん
12/03/04 14:40:56.64
でも2chで業務に関わる正規表現を相談するわけにもいかないし

641:デフォルトの名無しさん
12/03/04 18:18:09.44
ただでアフィの手伝いするなんてお人好しだな。

642:632
12/03/04 19:46:44.88
あ、一応弁解しとくと私はアフィサイトとかじゃないですよ
気になったスレをhtml変換して保存したいという、正規表現の練習も兼ねた趣味です
誤解があったらすみません
そもそもまとめをJScriptでちまちま変換してる人いるのかな?

643:デフォルトの名無しさん
12/03/04 22:03:16.25
そうか、2ちゃんねるまとめサイトか…

644:デフォルトの名無しさん
12/03/04 22:26:36.94
>>642
ちまちました変換をしてる人がいるかどうかじゃなく、
その変換のやり方を聞いてくる人に、2chまとめ系がおおいってことだわ。

645:デフォルトの名無しさん
12/03/04 22:27:38.98
ついでにいうと、スレタイを取得するために正規表現を使う人は少ないと思う。
正規表現がいいよっていわれたのかもしれないけど。

646:デフォルトの名無しさん
12/03/07 16:52:50.44
質問です

phpのpreg_replaceで文字列を入れ替えたいのですが

<a href="mailto:example@example.com">問い合せ</a>

のexample@example.comのみを入れ替えるにはどのような正規表現を使えば出来るでしょうか?

よろしくお願いします



647:646
12/03/07 16:54:14.75
ちなみにアドレスはexample@example.com固定とは限りません
よろしくお願いいたします

648:デフォルトの名無しさん
12/03/07 18:51:22.57
>>646
メールアドレスであることに拘らなければいいだけの話
mailto:の後ろにメールアドレス以外が来ることなんて普通ないだろ?
とりあえず/"mailto:.+?"/とかでいいんじゃね

649:デフォルトの名無しさん
12/03/07 19:19:21.86
>>648
レスありがとうございます
/"mailto:.+?"/とするとmailto:までマッチしてしまうのですが
メールアドレスのみマッチさせるのは不可能でしょうか?

よろしくお願いいたします

650:デフォルトの名無しさん
12/03/07 20:52:24.59
簡易的なチェックで良ければ、
「メールアドレス 正規表現」でググれば、例示がいっぱいあるよ。

651:デフォルトの名無しさん
12/03/07 22:47:27.20
>>649
>>3
> 【 初心者 】 正規表現 【 入門 】
> URLリンク(funcchan.blog16.fc2.com)

652:デフォルトの名無しさん
12/03/08 04:02:28.94
>>649
(?<="mailto:)[^"]+
かな

653:デフォルトの名無しさん
12/03/08 16:31:53.87
boku@jitakusa-ba.com のboku部分とjitakusa-ba部分を抽出する
正規表現を /(.*)@(.*)/ と書いたのですがちょっとエッチだなと思いました。

654:デフォルトの名無しさん
12/03/08 20:00:04.53
>>653
メールアドレスはシンプルな正規表現では書けないんだ!
現実を受け入れろ!

655:デフォルトの名無しさん
12/03/08 21:20:12.15
メールアドレスが正しいかどうかはかけないけど、アカウントとドメインを分割するのには>>653である程度大丈夫。
"nanasi@home"@example.com
には対応できないけど、別にいいと思う。

656:デフォルトの名無しさん
12/03/08 21:46:59.98
>>653でも最長一致優先探索ならそれは処理できるね。
(.*)@([^@]*)とするとアルゴリズムに関係なくましになるかね。

657:デフォルトの名無しさん
12/03/09 00:35:53.46
どうせならこうするのが正解でしょ
([^@]+)@([^@]+)

658:デフォルトの名無しさん
12/03/09 00:49:12.02
([^@]+)@([^@]+) <ブヒブヒ

659:デフォルトの名無しさん
12/03/09 03:57:50.08
>>657
改悪

660:デフォルトの名無しさん
12/03/09 16:01:56.77
>>649
だから、分かんないんだから無理しないで
"mailto:置換前の文字"

"mailto:置換後の文字"
に置き換えれば分かりやすくて確実だろって言ってるの
お前の目的はmailto:の後ろを置換することであって正規表現でメールアドレスに確実にマッチさせることじゃないだろうが

661:デフォルトの名無しさん
12/03/10 17:07:42.45
>>660
それは極端だ

662:デフォルトの名無しさん
12/03/10 17:48:08.06
そうか?

663:デフォルトの名無しさん
12/03/10 21:28:51.98
目的が達成されれば良いわけだから、俺はありだと思うけどな

664:デフォルトの名無しさん
12/03/10 21:30:46.34
俺もそう思う。目的と手段を間違えないようにすることは大切だ

665:デフォルトの名無しさん
12/03/10 23:02:06.25
「メールアドレスを拾いたい」
のか、
「mailto:○○ を置換したいのか」
の違いでしょ。

>>660の案に自分も一票。

666:デフォルトの名無しさん
12/03/10 23:51:43.33
>>664
プログラマと呼ばれる人たちには案外それを間違う人が多い気がする
だが新しい発想てのは稀にそういうとこから生まれたりするから否定はしない

667:デフォルトの名無しさん
12/03/11 01:30:19.58
「結果は一緒ですよ?」って言っても「いやいや、ダメだよ」っていう人に職業は関係ない
不慣れな人だからこそ「一緒ならやっといてよ」って感じで無知な押し付けをする人もいる

668:デフォルトの名無しさん
12/03/14 17:47:55.35
秀丸エディタのgrep(HMJRE.DLL V1.79)で
"hoge"という単語を検索するときに
'.'に続くもの以外を全て検索したいときの書き方を教えてください。

" hoge" ",hoge" 等は検索したいけど
".hoge"は検索したくありません


669:デフォルトの名無しさん
12/03/14 18:13:18.47
否定戻り読みを使う
(?<!\.)hoge
直前に\.が来ないhoge

サポートされてない時は[^.]hoge|^hogeで我慢

670:デフォルトの名無しさん
12/03/14 18:18:27.81
>>669
ありがとうございます。上手く行きました。

671:デフォルトの名無しさん
12/03/15 03:24:26.09
sedです

foo
bar
*piyo
*hoge
*zieg
kero
piyo
のような文章があるとして、先頭にアスタリスクがついている部分を別記号で囲みたいです。
foo
bar
[
*piyo
*hoge
*zieg
]
kero
piyo

sedのスクリプトファイルで書いているのですが複数行にまたがるマッチングをこなしてくれません
どうか御教示願います。

672:デフォルトの名無しさん
12/03/15 16:52:40.88
awk だが
awk '{ if ($0 ~ /^\*/) { if (!flag) print("["); print($0); flag = 1; } else { if (flag) print("]"); print($0); flag = 0; } }'

673:デフォルトの名無しさん
12/03/15 16:56:41.39
>>671
sedスレへ
スレリンク(unix板)

674:デフォルトの名無しさん
12/03/15 17:32:39.72
perlだが
perl -0777pe "s/((?:\*.*?\n)+)/[\n$1]\n/g"

675:デフォルトの名無しさん
12/03/15 17:41:29.31
もっと短くしなさい

676:デフォルトの名無しさん
12/03/15 18:06:33.62
>>674
a*hoge

677:デフォルトの名無しさん
12/03/15 18:18:06.63
>>676
perl -0777pe "s/((?<!a)(?:\*.*?\n)+)/[\n$1]\n/g"

678:デフォルトの名無しさん
12/03/15 18:21:22.40
違うそうじゃない

679:デフォルトの名無しさん
12/03/15 18:21:41.49
>>677
foo*hoge

680:デフォルトの名無しさん
12/03/15 22:59:16.86
ワンライナーが集団で現れた

681:デフォルトの名無しさん
12/03/15 23:25:50.72
>>103
亀、正規表現一発じゃないけど

$data =<<'HERE';
みんなの憧れ Justin Drew Bieber が大好き
私だけの Justin が欲しい
やっぱ Bieber 、Bieber って響きがいいよね
HERE

@ary = split(/ | /, $data);
$result = '';
for (@ary) {
$isCurrentHankaku = /^[A-Za-z]/ ? 1:0;
$result .= $isPreviousHankaku & $isCurrentHankaku? " $_": "$_";
$isPreviousHankaku = /[A-Za-z]$/ ? 1:0;
}
print $result;

682:デフォルトの名無しさん
12/03/16 01:17:05.36
Unicodeからむと正規表現が長くなるね

perl -CS -pe 's/(?<=\p{Latin})\p{Zs}+(?=\P{Latin})//g;s/(?<=\P{Latin})\p{Zs}+(?=\p{Latin})//g' <input

683:デフォルトの名無しさん
12/03/16 01:26:04.67
なんで2回してるの?

684:デフォルトの名無しさん
12/03/16 01:32:24.07
あ、そういうことか

685:デフォルトの名無しさん
12/03/16 18:26:27.29
Windows PowerShellから.Netのクラスを使用してチカン

$v = "会場[大磯ロングビーチ]"
[System.Text.RegularExpressions.Regex]::Replace($v, "^会場\[(.+)\]$","$1")

期待する結果:"大磯ロングビーチ"
実際:""

どうしてですか?
"大磯ロングビーチ"ってチカンするにはどうしたらいいのでしょうか


686:デフォルトの名無しさん
12/03/16 20:54:07.96
大磯ロングビーチに行って女の子のオパイをモミモミすれば良いよ


タイホ

687:デフォルトの名無しさん
12/03/16 22:13:07.37
>大磯ロングビーチ
もう存在しない。

688:デフォルトの名無しさん
12/03/16 23:11:23.76
>>685
""で囲んだ文字列は変数展開が有効になってる
抑制したいときは '' を使う(もしくは`)

[System.Text.RegularExpressions.Regex]::Replace($v, '^会場\[(.+)\]$','$1')

ちゅーか、$v -replace '^会場\[(.+)\]$','$1' でええやん
もしくは[Regex]::Replace($v, '^会場\[(.+)\]$','$1')


689:デフォルトの名無しさん
12/03/20 22:21:48.94
<que name="" mail="" vpos="-45400">/publish lv80605616_t2B_SHD_7@s35841 /content/20120319/lv80605616_214226439000_1_8370f8.f4v</que>
この文字列から

/content/20120319/lv80605616_214226439000_1_8370f8.f4v
の部分を抜き出すにはどうすればいい?

数字とかは毎回変わるんだけど

690:デフォルトの名無しさん
12/03/20 23:41:40.87
que.innerHTMLで/publish lv8.....f4v が取れるから後は好きなようにする

691:デフォルトの名無しさん
12/03/20 23:45:01.69
>>689
>>660

変わらないところはべた書きして「毎回変わる」ところは.+?にでもしとけ
/<que.+?(\/content\/.+?f4v\/)<\/que>/

692:デフォルトの名無しさん
12/03/21 07:11:36.55
>>691
それだと可変の文字列内にたまたまf4vの文字列が出てきたらNG
.+で最長マッチにしておくか可変の文字列内に記号(.)が出てこない仕様ならば
/<que.+?(\/content\/.+?\.f4v\/)<\/que>/
の方がよさそう

693:デフォルトの名無しさん
12/03/21 07:38:17.77
できました

694:デフォルトの名無しさん
12/03/21 12:53:29.40
わざわざqueとか調べなくても/contentから<までをとればいいんでないの

695:デフォルトの名無しさん
12/03/24 08:11:28.17
Objective-CのNSRegularExpressionで、
行頭の半角スペース列を置換しようとして@"^ +"と書いたのですが、文字列の最初しか行頭と認識してくれないらしく、
複数行にまたがる文字列の各行頭のスペースが置換できないので、改行文字に続く次のスペースも検出しようとして
@"^ +|\\n +"
と書くと、改行文字も含めて置換してしまうため、マッチ部分をキャプチャする()を使って
@"^( +)|\\n( +)"
としたのですが、
(2147483647,0)という文字列の外の範囲がマッチされてしまい、置換しようとしてエラーとなってしまいます。
文字列途中も含めて、行頭の半角スペース列のみを置換するためにはどのようなパターンを使うのが適切でしょうか?

696:デフォルトの名無しさん
12/03/24 08:46:28.26
>>695
URLリンク(developer.apple.com)

のTable 4 Flag Optionsを参考に、
mフラグを有効化して正規表現を複数行モードで
動作させればうまくいくかも

697:デフォルトの名無しさん
12/03/24 10:41:37.22
>>696
ありがとうございます!出来ました。

698:デフォルトの名無しさん
12/03/24 10:43:25.54
Comp
URLリンク(technet.microsoft.com)(v=ws.10).aspx

699:デフォルトの名無しさん
12/03/24 11:34:08.06
半角かっこはencodeして欲しい。
URLリンク(technet.microsoft.com)


700:デフォルトの名無しさん
12/03/25 01:29:15.20
700GET

701:デフォルトの名無しさん
12/03/25 04:06:16.60
private class Person
{
 public String personText = "Person";
}

private class Student : Person
{
 private String studentText = "Student";
 
 public String getText()
 {
  return (personText + studentText);
 }
}

public class Entry {
 public static void test(Person p) {
  Student s = p as Student;
  Console.Write(s.getText());
 }
}

これで、Entry.testをコールした後、GCでstudentTextは解放されるのでしょうか?

702:デフォルトの名無しさん
12/03/25 04:47:56.03
誤爆か

703:デフォルトの名無しさん
12/03/25 12:40:22.05
すみません、前と似たような質問なんですが
Objective-CのNSRegularExpressionで、
数値実体参照を置換しようとして、@"&#[0]*([1-9][0-9]*);?"と書いたのですが、
&#xまた&#Xで始まる16進表記に対応できないので、16進表記にも対応しようとして
@"&#[0]*([1-9][0-9]*);?|&#[xX][0]*([1-9A-Fa-f][0-9A-Fa-f]*);?"
としたのですが、
やはり(2147483647,0)という文字列の外の範囲がマッチされてしまい、置換しようとしてエラーとなってしまいます。
また、エラーが出なかったとしても10進か16進かがわからないので、再度プリフィクスが&#か&#xか調べないといけないので効率が悪い感じです。
10進も16進もマッチし、かつ10進か16進かを識別するためにはどのようなパターンを使うのが適切でしょうか?

704:696
12/03/25 13:38:44.57
>>703
10進にマッチした時と16進にマッチした時で置換後の文字列を変える目的や
それぞれどんな文字列に置換したいのがわからないと何とも言えません

多くの正規表現実装では()でグルーピングする度に
$1から連番で「キャプチャ」され、置換後文字列として$1や$2…でキャプチャされた部分を取り出せますが、
今回のケースで有用かが不明です

$nの詳細は>>696のリンク先のTable 3 Template Matching Format参照

705:デフォルトの名無しさん
12/03/25 14:02:53.15
>>704
ありがとうございます。
10進と16進で処理を変えたいのは、マッチした部分をキーにしてディクショナリから置換後の文字列(というか文字)を取り出すさい、
16進のキーはディクショナリに用意していないので、いったん10進文字列に変換してから同じようにディクショナリにアクセスさせたいためです。(変換メソッドは10進か16進か自動判別してくれないのでここで処理を分ける他ありません。)
$の使い方についてなのですが、キャプチャされた部分を取り出して$表記を用いた別の文字列(template)にキャプチャした部分を埋め込めるというのは分かるのですが
別の文字列のある部分を$~に置換するのではなくて、$でキャプチャした元の文字列自体を置換したいので、今回使えるかどうかはよくわかりませんでした
いろいろやってみたところrangeがぶっ飛んだ値になるのは、()を|などで分けて2つ以上設定した際に、マッチしなかった()について対応するインデックスのrangeのlocationがNSIntegerの最大値に設定されてしまうらしく
その値で分岐して、locationがNSIntegerMAXではないほうをキーとして取り出し置換することでとりあえず上手くいきました。

706:デフォルトの名無しさん
12/03/25 14:54:16.01
[xX]もキャプチャすれば判断できそうだけど。
置換対象はマッチした文字列全体でいいのでは。その環境使ったことないので、もし全体が取れないのなら全体をキャプチャ

707:696
12/03/25 15:36:35.36
>>706
マニュアル読む限り、$0でマッチした文字列全体みたい
自分も環境がないので試してはいませんが

708:デフォルトの名無しさん
12/03/25 20:21:11.43
>>705
「locationがNSIntegerMAXではないほうをキーとして取り出し」
で解決したみたいだけど、正規表現のマッチ文字列による処理分岐させる王道はこんな感じで、
OR条件は正規表現の|に頼らずに言語のif~else文使うのが良いかと

before = 文字参照文字列
if hoge =~ /�*([1-9][0-9]*);?/
after = searchDic($1)
elseif hoge =~ /&#[xX]0*([1-9A-Fa-f][0-9A-Fa-f]*);?/
after = searchDic(hex2Dec($1))
else
文字参照じゃなかったよ


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