正規表現 Part10at TECH
正規表現 Part10 - 暇つぶし2ch500:デフォルトの名無しさん
13/01/18 23:39:45.21
アフィかな、がんばれ。

501:デフォルトの名無しさん
13/01/19 01:52:56.64
ちなみに、

\D



(?!\d)

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

502:デフォルトの名無しさん
13/01/19 11:10:26.52
笑いを取るための模範解答ってこと?

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

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

505:デフォルトの名無しさん
13/01/21 01:22:11.29
>>504

506:デフォルトの名無しさん
13/01/21 12:23:08.55
キャプチャはいらないよね。それより全角

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

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

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

510:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/01/22 02:16:32.06
URLリンク(homepage3.nifty.com)
このdllが使えれば可能。

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

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

514:512
13/01/22 04:20:59.49
>>512のdllはダメだった、異常終了する。互換性ない。>>513が最善と思われ。

515:デフォルトの名無しさん
13/01/22 06:43:25.79
>>514
これなら互換性あるよ
URLリンク(homepage3.nifty.com)

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

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

518:510
13/01/23 12:52:35.13
>>517
有難うございます。ご指摘の通り「|」も検索されていました。
頭をもう一度整理します。

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

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

環境はrubyです。

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

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

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

523:デフォルトの名無しさん
13/01/23 20:07:29.60
>>522
URLリンク(www.rubular.com)
なんか環境が違うのかな、ともあれ>>521で動いたなら良かった

524:デフォルトの名無しさん
13/01/23 21:21:04.59
環境っつーか間違ってるから動かないんだろ

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

(?>X+)(?!Y)

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

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

527:デフォルトの名無しさん
13/01/24 23:29:31.94
まず環境が分からない

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

529:デフォルトの名無しさん
13/01/25 06:47:51.71
マルチ

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

【RAD統合環境】 Qt 総合スレ 14 【Win/Mac/Linux】
スレリンク(tech板:596-598番)

531:デフォルトの名無しさん
13/01/25 14:46:31.09
>>516
まだいる?いるなら>>515のライブラリで動くの作るよ?

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

533:デフォルトの名無しさん
13/01/26 13:18:17.27
練習用

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

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

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

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

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

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

今回作成に使った正規表現エディタ。↑のファイルを読み込んで編集出来ます。
URLリンク(1st.geocities.jp)

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

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

541:デフォルトの名無しさん
13/01/30 11:50:25.72
マクロでやれば簡単なのに

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

●検索か置換か?
 置換

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

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

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

よろしくお願いします。

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

544:>>543
13/02/01 15:54:50.12
ありがとうございます。
試してみます。

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


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