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


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

正規表現 Part10



1 名前:デフォルトの名無しさん [2012/06/23(土) 01:38:40.22 ]
正規表現(Regular Expression)スレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

正規表現 Part9
toro.2ch.net/test/read.cgi/tech/1323566370/

天ぷら等2以降

449 名前:デフォルトの名無しさん [2012/12/08(土) 19:15:47.14 ]
テストは一切してない
こんな感じか?
^(
([^\\ ]+): #頭から:の手前までの(*\と半角スペース*以外で1字以上)
|
\\\\([^\\\: ][^\\\:]*) #頭の\\の次から(*\と半角スペース*以外で1字)(*\と:と半角スペース*以外で1字以上)
)

450 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 19:40:05.98 ]
>>448
文字クラスの外で使う^が行頭ってことがわかれば
自力でいけそうな感じだな、がんばれよ。

451 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:03:40.80 ]
>>449
返信ありがとうございます
しかしながら[c:][\\安藤PC]となってしまい、コロンや\\が残留するようです。
このコロンや\\を一発で除去したいのが目的なので…

>>450
^が行頭は知ってます。
^ $ . + * ? [ ][^ ] ( ) | \\ \d \s \r \n \t $1 $2
単純な構造なら、↑ここらへんは書けますが、複雑になったり
回数指定や16進とかになると解説読んでなんとか…というレベルです。

2週なら[行頭の \\ 削除]、[行頭から最初の \ : まで取得]で簡単な話なんですが

452 名前:451 mailto:sage [2012/12/08(土) 20:14:29.95 ]
レス直後に自己解決しました。
$1一発で取るんじゃ無くて、>449さんに $2$3 で取得すれば行けますね。
ありがとうございました。

453 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:16:56.13 ]
別パターン

^(\\\\)?([^\\:]+)
\2

454 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:17:26.73 ]
解決したみたいだけどサクラエディタで質問する時は本体バージョンと、
使ってる正規表現DLLとそのバージョンを書くべき

455 名前:デフォルトの名無しさん mailto:sage [2012/12/08(土) 20:27:53.85 ]
自分だったら\や\\を\tに変換して、エクセルで作業しちゃう。

456 名前: 忍法帖【Lv=2,xxxP】(1+0:5) mailto:sage [2012/12/15(土) 23:17:38.36 ]
${2}1

457 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 20:36:10.03 ]
同じ文字列が繰り返されるような文字列にマッチさせるようにするにはどのように記述したら良いでしょうか?
ex)
apple_and_orange/1687646/abcde/abcde/hogehoge
apple_and_orange/5646818/fghijk/fghijk/hogehoge
apple_and_orange/1984687/lmnop/lmnop/hogehoge

/abcde/abcde/や/fghijk/fghijk/のように同じ文字列が繰り返されます
これが良い例えかどうかは分かりませんが、参照で説明したら
apple_and_orange/\d+/$1/$1/hogehoge
といった感じです



458 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 21:00:31.33 ]
/([^/]+)/\1

459 名前:デフォルトの名無しさん mailto:sage [2012/12/20(木) 21:08:48.05 ]
>>458
ありがとうございます

460 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 20:52:32.91 ]
Javaで正規表現を使ってHTMLの終了タグを順番に一つずつ抽出しようと思ったのですが失敗しました。
\\[/.*\\]
Hello regex world! [a href="foo.html"]This is link text.[/a] [strong][em]woohooo![/em][/strong]
⇒[/a] [strong][em]woohooo![/em][/strong]

いろいろ調べて最短修飾子を使えばいいのかなと思いましたがこれも失敗しました。

461 名前:460 mailto:sage [2013/01/03(木) 20:54:16.82 ]
すいません途中で間違えて描いてしまいました。
最短一致で次のように試して失敗しました。

\\[/.*\\]+?
Hello regex world! [a href="foo.html"]This is link text.[/a] [strong][em]woohooo![/em][/strong]
⇒[/a] [strong][em]woohooo![/em][/strong]

結果は変わりませんでした。
何が間違っているのでしょうか?

462 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:08:53.67 ]
\[/[^\]]+\]

エスケープの仕方が間違ってる

463 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:17:19.18 ]
回答してから気がついたんだけど、コレほんとにHTMLなの?
JAVAでは<>が[]で表現されるとか?

464 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:18:30.69 ]
>>462
回答ありがとうございます!
Javaだと角かっこをエスケープする\をエスケープするために\\[とか\\]としないとエラーになるようで、
\\[/[^\\]]+\\]
としたら無事一つずつ抽出できました!

[^]で角かっこに含まれない一文字にマッチという意味のようなのでこれは
/と]以外にマッチするということですか?

465 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:19:32.75 ]
>>463
すいませんHTMLじゃなくてHTMLのtextareaの中に含める独自タグでした……括弧が違うだけで原理は一緒です。

466 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:24:37.24 ]
エスケープしてるほうの[]は単なる文字で
素の[]は文字クラス

なので\\[/[^\\]]+\\] は
[]に囲まれた]以外の1文字以上の任意の文字列にマッチ

467 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:27:04.49 ]
あ、/忘れた

[]に囲まれた先頭が/の]以外の1文字以上の任意の文字列にマッチ

文章にすると逆に分かりづらいな
日本語のうまい他の人に期待



468 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:36:41.12 ]
エスケープ文字が邪魔でわかりにくかったので<>で見てみました。
</[^>]>

こうなりますよね……
</と>に囲まれた>以外の1文字以上の任意の文字列にマッチ

Hello regex world! <a href="foo.html">This is link text.</a> <strong><em>woohooo!</em></strong>


</

>
に囲まれた
a> <strong><em>woohooo!</em></strong>
とはならない理由がいまいちつかめてないです……たぶん[^>]の意味がちゃんと理解できてないんだと思います。
詳しい解説感謝です!

469 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:39:05.91 ]
間違えました、

</

>
に囲まれた
a> <strong><em>woohooo!</em></strong

です。

470 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:42:43.41 ]
あ、aタグの後ろの>で引っかかってaまでが[^>]の部分とみなされたってことですかね?
そして後ろに囲む>がくっついたと。
なんとなくわかったかもです!

471 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:47:55.58 ]
解説書いてたら自己解決してたでござる。

それであってるよ。
あと、念のため
</[^>]>
じゃなくて
</[^>]+>
ね。

472 名前:デフォルトの名無しさん mailto:sage [2013/01/03(木) 21:55:38.52 ]
あっ、+が無いと<と>の間に何もない時マッチしないですね
丁寧にほんと感謝です!

473 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 04:32:05.31 ]
そういうときは事前に【 】などに変換しておくと、ややこしくならなくて良いよ。

474 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 22:19:43.90 ]
>>473
遅くなりましたがアドバイスありがとうございます!

475 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:51:26.93 ]
後方参照で$1の後に特定の数字を続けたいんだけど、どう書けばいいんだろう
$12とか書くと、当然12番目のグループと解釈されて駄目

476 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:57:52.97 ]
${1}2

477 名前:デフォルトの名無しさん mailto:sage [2013/01/04(金) 23:59:46.88 ]
ああごめん
ググッたら一番上に出てきたわ
本当めんご



478 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 07:30:32.86 ]
へぇ。知らなんだ。
ずっと"$1\x32"みたいなメンドくさいことしてたわ。
横からおいしくいただきましたw

プログラミング言語関連の調べ物って、ググるにしても
キーワードが"$"とか"#"みたいな記号だったりして難しいよね。

479 名前:デフォルトの名無しさん mailto:sage [2013/01/05(土) 08:13:02.35 ]
後ろからもおいしく頂きます。

480 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:10:04.48 ]
boost regexでの話なのですが、後読みが使えないのですが何とかして先読みで代用できないものでしょうか?

先読み後読みの仕組みもそこそこにしか理解してないものの、無理そうな気配は感じております
が、この道の先人であるところの皆様なら何かすごい裏技をご存知なのではと一縷の望みを託しに参上いたしました

481 名前:デフォルトの名無しさん [2013/01/07(月) 00:37:46.83 ]
後読みって戻り読みの別称でいいんだっけ?

482 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:43:41.18 ]
はい。英語ではlook-behindと書かれる↓です
(?<=),(?<!)

483 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:43:55.04 ]
>>480
可変長戻り読みの正規表現を使おうとしてるんじゃないの?
ttp://jp.emeditor.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=239&forum=3

もうちょっと具体的にマッチさせたい対象データと
boostの制限で通らなかった正規表現パターンを書いてもらわないと
アドバイスしづらい

484 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 00:52:54.44 ]
>>483
それです
可変長というのがよく分かりませんが

具体的には、
(?<!やす|ひろし|てつや)さん
で検索すると
のりこさん、ちぐささん、ひろしさん、てつやさん
の内 のりこさん と ちぐささん のさんがマッチしますが、(?<=),(?<!)が仕様上無いとのこと

どうにかなりませんでしょうか……?

485 名前:デフォルトの名無しさん mailto:sage [2013/01/07(月) 03:44:19.04 ]
> (?<=),(?<!)が仕様上無いとのこと
ある
(?<!やす|(?<=ひ)ろし|(?<=て)つや)さん
でいける

よく調べようね

486 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 17:20:32.87 ]
>>485
ありがとうございます
それがいわゆる可変長と言うやつでしょうか
やす、ひろ、てつなら問題なかったと

487 名前:デフォルトの名無しさん [2013/01/08(火) 21:09:21.66 ]
行頭と行末にリストタグを追加したいのですが、うまくいきません。。。
秀丸使っています。。どのように書けばいいのでしょうか??

あああ
いいい
ううう

↓望む結果

<li>あああ</li>
<li>いいい</li>
<li>ううう</li>



488 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 21:37:20.10 ]
(.*)
<li>\1</li>

489 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 21:49:48.37 ]
もし空行があった場合<li></li>だけの行になってしまうと多分まずいので
*より+のほうがいいと思う

490 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:01:39.99 ]
^(.*\S.*)$

スペースだけの行もカット。\Sは詳説・正規表現でよく出てくる。

491 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:05:41.50 ]
つまりだな
質問者はテンプレ使えって事だ

492 名前:デフォルトの名無しさん mailto:sage [2013/01/08(火) 22:14:53.93 ]
テンプレの要項は満たしてるけど説明欄が不十分

493 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 16:51:43.53 ]
^(\s*)(.+)$
\1<li>\2</li>
インデント殺さないでほしいってなったときに。

494 名前:デフォルトの名無しさん mailto:sage [2013/01/09(水) 20:47:05.50 ]
>> 488-493
質問者です。どうもありがとうござました。遅くなりました。

これでできました。
(.+)
<li>\1</li>

^(.*\S.*)$
<li>\1</li>

スペースの違いがあまりわからず、、いろいろと深いですね><

495 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 11:20:51.12 ]
PHPにて、2chで見るようなレスアンカーを検知して
その内容を区分けするようなプログラムを組んでいます。

例えば$testというstring型の中から
特定のアンカーがついた文章ごとに
配列に格納するようにstrposを使い
for($i = 0; $i <= 1001; $i++){
$res = '>>'.$i.'';
if(strpos($test, $res) !== false)){
//配列に入れる諸々処理
}}
という風に、簡略化はしてますがこんなのを書いたところ

動いてはくれるのですが、>>1とついた文章と>>15とついた文章が区別できてません。
>>1がついた文章用の配列の中に
>>15がついたのまで入っちゃいます。
その逆もです。
うまくそれらを区別するにはどんな正規表現を使えばいいのか、どなたかご教授願います。。

496 名前:デフォルトの名無しさん [2013/01/18(金) 12:09:05.36 ]
皇潤
数字以外を検出

497 名前:495 mailto:sage [2013/01/18(金) 13:22:49.52 ]
>>496
レスありがとうございます。
確かに>>数字、の後には何かしら数字以外がくるので桁数を指定できますねなるほど…。

しかし、preg_matchで'/>>'.$i.'\D/'を条件にしてみましたがうまくいきません。
書き方が悪いのでしょうか?
降順もググッたりしましたがもう少しヒントを…
forをデクリメントで回したりしても結果変わらず…です…。



498 名前:デフォルトの名無しさん [2013/01/18(金) 13:33:13.42 ]
自分の投稿内容よく読めよ

499 名前:495 mailto:sage [2013/01/18(金) 14:02:53.49 ]
>>498
正規表現と全然関係ないとこでミスってました。
'/>>'.$i.'\D/'こいつでいけてたんですが
preg_matchは !== false じゃなく
=== 1 で条件つけるべきだったんですね。

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

500 名前:デフォルトの名無しさん mailto:sage [2013/01/18(金) 23:39:45.21 ]
アフィかな、がんばれ。

501 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 01:52:56.64 ]
ちなみに、

\D



(?!\d)

にするのが模範解答な。\Dの場合、数字以外の文字が必ず必要だが、(?!\d)の場合、
後ろに文字が存在しない場合でもマッチする。まぁ実用的には変わらないかもだが。

502 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 11:10:26.52 ]
笑いを取るための模範解答ってこと?

503 名前:デフォルトの名無しさん mailto:sage [2013/01/19(土) 17:19:26.64 ]
>>501
その部分については安価のみを除外したい意図があるのかもしれないし。
数字をキャプチャするのが模範解答()には必要だと思うよ

504 名前:デフォルトの名無しさん mailto:sage [2013/01/20(日) 01:15:05.18 ]
アンカのみを除外とか・・数字のキャプチャとか・・何言ってんだこいつは。
プログラミング出来ない馬鹿は黙ってろ。

505 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 01:22:11.29 ]
>>504

506 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 12:23:08.55 ]
キャプチャはいらないよね。それより全角

507 名前:503 mailto:sage [2013/01/21(月) 13:41:04.68 ]
>>504
for($i = 0; $i <= 1001; $i++){
$res = '>>'.$i.'';
プログラミングできる頭いい人ならこの時点でクソプログラムだってつっこめよ。



508 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:31:34.57 ]
人のミスを探す前に自分のミスを認めて謝罪して土下座するのが先じゃないの?
それが出来ないなら明日から来なくていいよ?

509 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:52:05.30 ]
あ、、アンカのみ除外ってそういうことか。
計算量を考えたら数字のキャプチャも必要か。。
プログラミングできない馬鹿はこちらでした。すみませんでした。

510 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 01:07:37.81 ]
●正規表現の使用環境
 秀丸エディタver8.11マクロ(正規表現:HMJRE.DLL V3.41)

●検索か置換か?
 置換

●説明
 ”(ダブルクォーテーション)で囲まれた文字列の中のある文字を置換したい。

●対象データ
 BASICテキスト
 10 A$="AR_2_ZBG":B$="_GDA_"
 20 C=D_2
 30 G$="_":E=F_2:IF G$>"_" THEN 100

511 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 01:10:15.54 ]
>>510の続き

 例えば上記のようなBASICテキストにおいて、行番号10,30の""の中にある_を-に変換したい。
 但し、行番号20のC=D_2と30のE=F_2の_は変換しない。
 なお上記のBASICテキストの””内は_の他に任意の半角文字とします。


●希望する結果
 10 A$="AR-2-ZBG":B$="-GDA-"
 20 C=D_2
 30 G$="-":E=F_2:IF G$>"-" THEN 100

512 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 02:16:32.06 ]
homepage3.nifty.com/k-takata/mysoft/bregonig.html
このdllが使えれば可能。

使えなければその処理をするためのプログラム作るか、手動で。

513 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 02:54:25.90 ]
>>510
正規表現だけでやろうとするな
秀丸なら追加の条件を使うのが定石

514 名前:512 mailto:sage [2013/01/22(火) 04:20:59.49 ]
>>512のdllはダメだった、異常終了する。互換性ない。>>513が最善と思われ。

515 名前:デフォルトの名無しさん mailto:sage [2013/01/22(火) 06:43:25.79 ]
>>514
これなら互換性あるよ
ttp://homepage3.nifty.com/_htom/macro/macro_dll.html#label-23

516 名前:510 mailto:sage [2013/01/22(火) 13:07:41.94 ]
>>512>>513>>514>>515
皆様、ご回答有難うございます。
別のDLLを使う事や追加の条件を使う事を考えます。
昨日連続で書き込み出来なかったのですが、
 replaceall "([<|>|=]\"[^\"]*)_([^\"]*\")"
, "\\1\-\\2" , regular;
このようなマクロを考えて悩んで相談しました。
有難うございます。

517 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 06:35:15.85 ]
[<|>|=] ←これだと 「|」 も検索されちゃうよ、[<>=] ね。



518 名前:510 mailto:sage [2013/01/23(水) 12:52:35.13 ]
>>517
有難うございます。ご指摘の通り「|」も検索されていました。
頭をもう一度整理します。

519 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 15:29:07.46 ]
文字列に複数回数字が出現する時に
最後の数字だけ判定するには正規表現はどう書けばいいでしょうか?

具体的には
"foo 111 333 bar 222-hoge"
では"222"にマッチして
"aaa 22"
とある場合には 22 にマッチさせたいです。

環境はrubyです。

520 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 16:02:28.10 ]
>>519
\d+(?!.*\d)
先読み慣れてないけど、こんな感じかな。

521 名前:デフォルトの名無しさん [2013/01/23(水) 16:03:41.71 ]
[\d]+[^\d]*$

522 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 18:21:29.78 ]
>>520
動きませんでした…。
>>521
ありがとうございます。
希望の動作ができました!

523 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 20:07:29.60 ]
>>522
www.rubular.com/r/Rg66E8ONpE
なんか環境が違うのかな、ともあれ>>521で動いたなら良かった

524 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 21:21:04.59 ]
環境っつーか間違ってるから動かないんだろ

525 名前:デフォルトの名無しさん mailto:sage [2013/01/23(水) 22:16:41.32 ]
繰り返しの後ろに先読み否定を置くと落とし穴になることある。

(?>X+)(?!Y)

みたいに前の繰り返しを強制的に最長消費させれば落とし穴を埋められる。

526 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:15:48.24 ]
test(100) という文字列があって、(100)にマッチさせたいのですが、
\(.*\) ←この正規表現ではマッチしませんでした
wikiを呼んだら
>>"\(" や "\)" で囲まれた表現に続く "*" は無効とされる。しかし、一部の環境ではそうならない。
と書いてありました。
それでは(100)にマッチするパターンはどう記述するのでしょうか?

527 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:29:31.94 ]
まず環境が分からない



528 名前:デフォルトの名無しさん mailto:sage [2013/01/24(木) 23:34:29.13 ]
>>527
QtというC++のライブラリです
Qtのスレもあるんでそっちで聞いたほうがいいですかね?

529 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 06:47:51.71 ]
マルチ

530 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 07:45:56.09 ]
>>529
もう解決してるね。(>>526)

【RAD統合環境】 Qt 総合スレ 14 【Win/Mac/Linux】
toro.2ch.net/test/read.cgi/tech/1344830647/596-598

531 名前:デフォルトの名無しさん mailto:sage [2013/01/25(金) 14:46:31.09 ]
>>516
まだいる?いるなら>>515のライブラリで動くの作るよ?

532 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 13:03:18.05 ]
正規表現を身につけようと思ってググったら
正規表現練習ツールってのを見つけたんですけど
どうなんですか?

533 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 13:18:17.27 ]
練習用

534 名前:516 mailto:sage [2013/01/26(土) 20:22:42.91 ]
>>531
いますよー。もし可能でしたらお願い致します。<(_ _)>
結局、正規表現だけでは難しかったので、
取りあえずマクロと組み合わせて動かしています。

535 名前:デフォルトの名無しさん mailto:sage [2013/01/26(土) 21:40:31.13 ]
>>534
鬼車dllで動くものはもう出来てるんだけど、秀丸用のdllって独自の改変が入ってるらしくて期待した通りに動かない・・
www42.tok2.com/home/proxo/rep/

違いを探して直すまでもう少しかかるから1日ほど待って。

536 名前:516 mailto:sage [2013/01/26(土) 22:51:09.97 ]
>>535
お時間を取らせてしまい申し訳ないです。了解致しました。
正規表現_part10_res510も拝見しました。
私はマクロで、正規表現で『[<>=]"文字"の中の最初の「_」】
をマッチさせた上で、
その後は1文字ずつ「_」があるか「"」が出るまで調べ、
「_」があれば都度、「_」を削除、「-」を挿入する処理を繰り返してます。

537 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 04:46:22.44 ]
>>536
おまたせです。書き込むときに長すぎると怒られたので【検索欄】を2行に分割してます。(一行に繋げて使って下さい)

【検索欄】
(?<C1>(?>(?:[^"\\_]|\\\p{ASCII})*)){0}(?<C2>(?:\g<C1>|_)*){0}(?:^(?<CAP1>(?:\g<C2>"\g<C1>")*\g<C2>"\g<C1>)_
|\G(?<=.)(?<CAP2>\g<C1>(?:"(?:\g<C2>"\g<C1>")*\g<C2>"\g<C1>)?)_)
【置換欄】
\3\4-

これの動作は
--------------------------------
カッコ外"カッコ内"カッコ外"カッコ内"
--------------------------------
というように、"が出現するごとにカッコの外か内かを判定してます。

よって、"の数が合わない場合、誤作動します。
-----------
〜"〜"〜"〜
-----------
↑最後の〜がカッコ内と判定される。

また、\"のエスケープに対応しています
------------
〜"〜\"〜"〜
------------
↑正常に動く。



538 名前:デフォルトの名無しさん mailto:sage [2013/01/27(日) 05:00:40.98 ]
この動作で問題がある場合は言って下さい。
[<>=]を判定に付けたり、"の数が合わないときは最初から置換をしない、といったことが可能です。

↓この正規表現のソースみたいなもの。
www42.tok2.com/home/proxo/rep/index.html
秀丸用ライブラリ(hmonig.dll)のメモ的なものも書いておきました。
興味のある方はどうぞ。(無理に読まなくていいです)

今回作成に使った正規表現エディタ。↑のファイルを読み込んで編集出来ます。
ttp://1st.geocities.jp/neeetest/RepStrTool_2.8.zip

539 名前:516 mailto:sage [2013/01/28(月) 04:47:14.90 ]
>>537
すごい、完璧に動作しました!有り難く使用させて頂きます。
記載頂いた表現の中身をまだ理解しきれていないので勉強します。
今回は誠に有難うございました。また返答が遅くなり
申し訳ございませんでした。

540 名前:デフォルトの名無しさん mailto:sage [2013/01/28(月) 09:48:29.09 ]
>>539
丁寧にどうもです。後から手を加えやすい作り方をしたので何か要望があればお気軽にー。

541 名前:デフォルトの名無しさん mailto:sage [2013/01/30(水) 11:50:25.72 ]
マクロでやれば簡単なのに

542 名前:デフォルトの名無しさん mailto:sage [2013/01/31(木) 22:50:54.28 ]
●正規表現の使用環境
sakuraテキストエディタ (bregonig.dll ver3.02 with Onigma 5.13.2)

●検索か置換か?
 置換

●説明
入れ子のデータを分離したい。

●対象データ
(あいう[えお])

これをキャプチャして、(あいう)[えお]と分離したいです。

よろしくお願いします。

543 名前:デフォルトの名無しさん mailto:sage [2013/02/01(金) 05:15:18.17 ]
(?:\(([^\(\)\{\}]*)\[([^\(\)\{\}]*)\]\))
($1)[$2]

544 名前:>>543 mailto:sage [2013/02/01(金) 15:54:50.12 ]
ありがとうございます。
試してみます。

545 名前:デフォルトの名無しさん [2013/02/03(日) 06:34:15.67 ]
正規表現の定義は
スレッドプロセスに聞いてくれ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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