[過去ログ] Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
524: 2018/05/26(土)19:07 ID:vUfk79H6(1/2) AAS
外部リンク:regex101.com
なぁこれメンテしたいか?というか出来るか?なぁ?
(?i:<a(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*>)
((?:
(?i:<img(?:\s+(?:src="([^"]+)"|[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?))*(?:\s*\/)?>)
|(?i:<([a-z][a-z0-9]*)(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*>(?1)<\/\3>)
|(?i:<[a-z][a-z0-9]*(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*\s*\/>|.*?))*)
(?i:<\/a>)
525: 2018/05/26(土)19:08 ID:vUfk79H6(2/2) AAS
アップデートするの忘れてたわ
外部リンク:regex101.com
526: 2018/06/23(土)01:47 ID:19kQ7FFf(1) AAS
のりこめー
【IT】プログラマーが正規表現を使いこなすメリットとは?
2chスレ:bizplus
527: 2018/06/24(日)13:33 ID:wSHpLaLO(1/2) AAS
文字列の中から数字13桁(それ未満でも超えてもNG)を抽出するにはどうしたらいいでしょう
JANコードらしきを抜き取りたいのです。
候補を抽出してから後でチェックデジット計算しますので
数字13桁のみで大丈夫です。
528: 2018/06/24(日)15:06 ID:F1zD07yq(1) AAS
数字40桁くらい連続してたらどうする?
529: 2018/06/24(日)16:56 ID:wSHpLaLO(2/2) AAS
40桁はJANコードじゃないので除外したいです
530(2): 2018/06/24(日)17:16 ID:1DBcJ9cD(1) AAS
\b[0-9]{13}\b
とか
(?<![0-9])[0-9]{13}(?![0-9])
とか
携帯だから試してない
531(1): 530 2018/06/24(日)20:41 ID:LPLL+qJx(1) AAS
先頭と末尾も考慮すると
外部リンク:regex101.com
(?:(?<=[^0-9])|^)[0-9]{13}(?:(?=[^0-9])|$)
ただかなりバックトラックするから性能は悪い
どうせチェックディジット確認するなら13桁以上で全抽出して桁数チェック追加した方がマシに見える
外部リンク:regex101.com
[0-9]{13,}
532: 2018/06/24(日)23:39 ID:chBT6m1a(1) AAS
結構、難しい
A <13桁の数字> B
A の部分が、文字列の先頭か、数字以外で、
B の部分が、文字列の末尾か、数字以外
533: 2018/06/25(月)07:16 ID:HTnjHonA(1) AAS
文字列操作可能なら両端に数字以外の文字を付加して
[^0-9][0-9]{13}[^0-9]
かな
534(1): 2018/06/25(月)08:32 ID:g3low2hV(1) AAS
>>531
先読み後読みは先頭や末尾にも一致するからそういうのは無駄
>>530の二つ目で完成している
535: 2018/06/25(月)09:21 ID:9/L2g6Oc(1) AAS
>>534
せやな, 否定前後読みならそのままでよかったわ(肯定で試しちゃった)
ただどのみちバックトラック多くて無駄だから正規表現だけでやるのでなければ13桁以上でマッチングして桁数判定入れるべきだと思う
536: 2018/06/25(月)21:12 ID:lRi8bnr9(1) AAS
13桁を超えていても候補として受け取っておいて
チェックデジットの計算の手前で落とします。
どうもありがとうございました。
537: 2018/06/26(火)18:51 ID:PFtq6YS9(1) AAS
文字列の先頭の文字以外を*に変換する
というのはどう書けばいいでしょうか?
538: 2018/06/26(火)20:16 ID:IMFKH44M(1/2) AAS
こういうこと?
$perl -pe 's/(?!^)./*/g'
alpha
a****
beta
b***
gamma
g****
$
良い方法かどうかはわからないが。
539: 2018/06/26(火)20:22 ID:IMFKH44M(2/2) AAS
perl -pe 's/(?<!^)./*/g'
とすべきだったかな。
540: 2018/07/04(水)22:06 ID:gFgZc5FG(1) AAS
J1Q
541: 2018/07/05(木)16:31 ID:AeL6VB/V(1) AAS
J1Q
542(1): 2018/07/16(月)14:08 ID:80hpbb9v(1) AAS
1 2 3 の3つの文字を、順番不同で、必ず各々、1つ以上含む
a23b1 → 真
1a2 → 偽
これは順番の組み合わせだから、正規表現で出来ますか?
543: 2018/07/16(月)14:41 ID:/+vnEc6c(1) AAS
>>542
先読みが使えれば
^(?=.*1)(?=.*2)(?=.*3)
544: 2018/07/25(水)19:56 ID:1XdhMp/e(1) AAS
サクラエディタで
<>で囲まれていないaaaをあああにしたいです
<aaab>aaa<caaadaaa>baaadeaaa<ccc>baaad<baaa>aaabaaadaaa<ee>
↓
<aaab>あああ<caaadaaa>bあああdeあああ<ccc>bあああd<baaa>あああbあああdあああ<ee>
>([^<>a]*?)(aaa)([^<>a]*?)<
>$1あああ$2<
だと「>aaa<」や「>baaad<」は置換できるけど「>baaadeaaa<」や「>aaabaaadaaa<」が置換できずに残る
そこで
>([^<>a]*?)(aaa)([^<>a]*?)(aaa)([^<>a]*?)<
省4
545(1): 2018/07/25(水)20:31 ID:AmPlbSPQ(1/2) AAS
[]内のa取っ払って
ぜんぶ変換できるまで何回もやったら?
(>[^<]*?)aaa([^>]*?<)
546(1): 2018/07/25(水)20:46 ID:AmPlbSPQ(2/2) AAS
aaa(?=[^>]*<)
前後に必ずタグがあるならこれなら一回
547: 2018/07/26(木)09:15 ID:4NbdqkDU(1) AAS
>>545>>546
できた!できました!
ありがとうございます
548(1): 2018/07/29(日)09:53 ID:JxpitKP8(1/4) AAS
●
パターン1, (\d+)月(\d+)日
パターン2, (\d+)月(\d+)数字以外(\d+)日
これを一回で取得したい
●対象データ
7月1日
7月2〜4日
7月6から10日
7月12・13日
●希望する結果
省5
549: 2018/07/29(日)10:18 ID:kCYuy8BN(1/3) AAS
取得って何だよ変数に入ればいいのか置換結果として取得したいのか
550: 2018/07/29(日)10:49 ID:TzC7zb5n(1) AAS
>>548
ほんまにそれが希望する結果?
数字とりだしてるだけなんだけど。
551: 2018/07/29(日)10:59 ID:JxpitKP8(2/4) AAS
取り出すだけでいいです。
552(1): 2018/07/29(日)11:42 ID:kCYuy8BN(2/3) AAS
数字取り出して変数に入れるだけなら /(\d+)月(\d+)(?:\D+(\d+))?日/gu で仕舞いだが
553: 2018/07/29(日)11:45 ID:JxpitKP8(3/4) AAS
>>552
完璧です。
ありがとうございました。
554: 2018/07/29(日)11:49 ID:kCYuy8BN(3/3) AAS
変数にキャプチャしたいのか置換で取り出したいのかくらい書こうな
555: 2018/07/29(日)11:57 ID:JxpitKP8(4/4) AAS
失礼しました
556(2): 2018/08/12(日)20:55 ID:MOc1ccj1(1/2) AAS
C#で正規表現を使ってHTML内から文字コードをとってきたいのですが
以下の場合だと"UTF"としか取得できません。
"UTF-8"と取得する場合どうすればいいでしょうか?
<[^>]*\bcharset\s*=\s*[""']?(?<charset>\w+)\b
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
557(4): 2018/08/12(日)21:30 ID:mMH07JtW(1/2) AAS
>>556
HTMLは扱いが難しいからパーサ使った方がいい
どうしても正規表現だというなら,
1. とりあえず的な修正
外部リンク:regex101.com
/<[^>]*\bcharset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)")\b/$1$2$3/i
2. もう少し気合の入れた修正
外部リンク:regex101.com
|<meta
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*
省4
558: 2018/08/12(日)21:47 ID:L571MbNB(1) AAS
>>557
神だ
559(2): 557 2018/08/12(日)21:53 ID:mMH07JtW(2/2) AAS
2.の方を若干修正, charsetには値が必要ですわ
外部リンク:regex101.com
|<meta
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*
(?:\s+charset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)"))
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*\s*/?>|$1$2$3|i
560: 2018/08/12(日)22:00 ID:MOc1ccj1(2/2) AAS
>>557
ありがとうございます!
当方がやりたかったことは、HTMLをテキストデータとして大量に取得して、その中から特定のワードでの絞り込みです。
正しい文字コードでHTMLを落としてからパースしようと思ったのですが、確かにパーサでやる手もありそうですね
正規表現は今まで避けてきたので、読むのがシンドイっていうかチンプンカンプンですが
求めていた動作です。とても助かりました。
使わせてももらいます。ありがとうございました。
561(3): 2018/08/12(日)23:56 ID:2UQfVx23(1) AAS
HTML のように、要素に親子関係があるもの・構造化されたものは、正規表現じゃ無理
<1><x></x><y></y></1>
開き・閉じタグで、前から一致させると、
<1></x> が対応してしまう
ネストも無限にできるから、対応させるのは無理。
パーサを使うべき
562: 2018/08/13(月)00:16 ID:06GD6VnQ(1) AAS
キーワードと構成次第だろ
563: 2018/08/13(月)00:22 ID:LXDaPxOa(1) AAS
rubyキチやぞ
564(1): 2018/08/13(月)03:34 ID:EnLsbSTB(1) AAS
>>561
一部の環境では括弧等のネスト構造を取り扱いをサポートした正規表現があるよ
PCRE(Perl 5.10以降)やruby(鬼雲)、Python,PHPなどでも
C#の.NET Framework環境でもあったんじゃないかな
565: 2018/08/23(木)19:11 ID:4kav5HXR(1) AAS
.*
何にでもマッチさせることができる最強で万能な正規表現
566: 2018/08/23(木)19:26 ID:FR6Db0Vc(1) AAS
改行にはマッチしないけどね
[\s\S]*
567(2): 2018/08/24(金)02:29 ID:cgE41D9D(1) AAS
>>561
> HTML のように、要素に親子関係があるもの・構造化されたものは、正規表現じゃ無理
そういうこともできるように拡張した正規表現があればいいのに
さらに階層、treeも可
568: 2018/08/24(金)03:56 ID:k/tOxHF9(1/2) AAS
>>567
鬼雲使ってみれば?
569: 2018/08/24(金)10:28 ID:bF2ATmvV(1) AAS
BNF使えよ
570: 2018/08/24(金)10:38 ID:wb3Q/jKx(1/2) AAS
なんか知識が数年前で止まっちゃってる人がちらほらいるな
正規表現がネストに対応したのなんてもう一昔前ってイメージだけど
571(1): 2018/08/24(金)12:46 ID:srP6ovAZ(1) AAS
別に正規表現だけを追いかけてるわけじゃないから
572(1): 2018/08/24(金)12:48 ID:ZVlysGry(1) AAS
なんでも正規表現で済まそうとするひとって
意地でもVBA使い続けてるひとと大差ない
573: 2018/08/24(金)12:49 ID:yKVFr0CJ(1) AAS
適材適所
574: 2018/08/24(金)16:58 ID:k/tOxHF9(2/2) AAS
>>567
てか>>561には>>564のレスが既に付いてたじゃんか
575: 2018/08/24(金)18:58 ID:wb3Q/jKx(2/2) AAS
>>572
賢い人程手段をたくさん知り
その中から取捨選択するからな
>>571
さすがに勉強不足すぎだろw
何年前で知識止まってんだよ
576: 2018/08/25(土)00:03 ID:r5O9PJUC(1) AAS
はいはい、正規表現マスターすごいねー
これでいいかな w
577: 2018/08/25(土)00:35 ID:I7tIpqHO(1) AAS
底辺に行くほど知識自慢はしかたがないだろ、正規表現に限らず
ただ掲示板的に質問したいのにバカがしゃしゃり出てきて迷惑だよな
578: 2018/08/25(土)10:52 ID:J+b/MRtJ(1) AAS
的確な指示されても気に入らない回答だからと人の話を聴かない人は成長しないよ
自分の気に入る回答しかも自分と同じレベルの回答もらって喜んでればいい
579(1): 2018/08/26(日)15:08 ID:sCPJIsfv(1/4) AAS
俺なんか中学の勉強もロクにしなかったのに正規表現を理解したいから
今、大学レベルの数学を勉強してる・・なかなか進まないけどね・・
>>556 の質問からパーサとか出てくるのはちょっと違うと思うよ
metaタグ拾えばいいだけだよね?難しく考えすぎだよ
あとHTMLソースのほうが糞で実際の文字コードとmetaタグで指定されてる
文字コードが違うなんてことや、文字コードの指定が複数個所あるなんていう
2ページ分のHTMLをそのままくっ付けましたなんていうのも稀にあるから
そういう糞なHTMLを相手にする場合は対応を考えないといけないね
580: 2018/08/26(日)15:31 ID:CE5Lnwmj(1/2) AAS
>>579じゃあmetaタグを拾って来る正規表現をどうぞ
581: 2018/08/26(日)15:37 ID:zPuf2RGr(1) AAS
え? そんなことマジで聞いてるのか?
582: 2018/08/26(日)15:40 ID:CE5Lnwmj(2/2) AAS
マジだからちゃんと教えてくれよ
583(13): 2018/08/26(日)18:08 ID:sCPJIsfv(2/4) AAS
自分用に作るならこんな感じかなぁ、動作確認してないので使わないでね
|
<meta (?=\s) [^<>]* \s charset \s* = \s* (?:["']\s*)? ([^\s"'<>;]+)
|x;
こういうのは想定外 ※ " " の中に > がある
<meta comment="a>b" charset="UTF-8">
584: 2018/08/26(日)18:17 ID:O4hA/SKg(1) AAS
>>583
俺が書いた糞(>>559)より糞なコードが書かれて驚く
素直にパーサ使えよ
585: 2018/08/26(日)18:36 ID:sCPJIsfv(3/4) AAS
>>583 のほうがスマートなのは一目瞭然でしょ
ただ >>583 は こんな感じ 程度のものなのでツッコミ所があっても知らないよ
586(1): 2018/08/26(日)18:37 ID:5oVMxLBv(1) AAS
mataタグでのcharsetは定型的でしか使われないんで、仕様的に色々な場合に対応するのは無駄
俺が使うなら、こんなので十分
/<meta[^>]*\scharset=(["'])((?:(?!\1).)+)/i
587: 2018/08/26(日)18:52 ID:sCPJIsfv(4/4) AAS
ほとんどの場合はそれで充分だろうねw
588: 2018/08/27(月)04:46 ID:2QlJLeh2(1) AAS
マッチングテスト
[1] <meta charset="UTF-8">
>>557 1. 失敗
>>559 マッチ
>>583 マッチ
>>586 マッチ
[2] このスレのHTML
557 1. マッチ
559 失敗
583 マッチ
省1
589: 2018/08/29(水)16:43 ID:4UnjToZE(1) AAS
こんなバカが回答者してたのか
過去レス見ると前から張り付いてるようだね
590(1): 2018/08/31(金)20:05 ID:5NewXZva(1/2) AAS
なかなか興味深い
鬼雲に非包含オペレータを実装した話
外部リンク:qiita.com
591: 2018/08/31(金)21:09 ID:5NewXZva(2/2) AAS
bregonig.dll 2017/01/17 Ver.4.10 非包含オペレータに対応
うーん、非包含にマッチする正規表現はいつか自分で作れるように
なりたいと思ってたけど内部で勝手に作ってくれる時代になってしまったか〜
自分の知識は2013あたりで止まってるから浦島だ
592: 2018/09/01(土)01:28 ID:0IlLcsWm(1/2) AAS
ab(?~ba)ba
これを
ab((?!ba).)*ba
この従来通りの方式をベースに記述して、かつ、前者とまったく同じ
動作に書き直すことは可能かな?
両者の違いについては>>590のリンク参照
593: 2018/09/01(土)22:17 ID:0IlLcsWm(2/2) AAS
(?~abc)
これは↓とまったく同じ動作になると言って良さそう
(?:(?!abc).)*(?:(?=abc).{1,2})?
否定したい文字列が固定長なら先読みで書き換え可能らしい
594: 2018/09/12(水)19:47 ID:j29ToL0A(1) AAS
正規表現を言語化できるようなとこ知りませんか?
/^ab/
これを入れると、
↓
「abで始まる」
と変換されるようなサービスって無いでしょうか?
595: 2018/09/13(木)09:47 ID:l9KSlvFS(1) AAS
せっかく正規表現にした意味が無い
596(1): 2018/09/13(木)09:50 ID:NoauaeTl(1) AAS
外部リンク:jex.im
597: 2018/09/13(木)13:28 ID:a9m+mGXQ(1) AAS
視覚的に見れるサイトじゃなくて視覚的に作れるサイトがあったら便利かな
メタ文字を覚える必要が無くなるし動作を把握しながら作れる
そういうのが普及したらいいね
598: 2018/09/14(金)00:35 ID:qC9qAPWt(1) AAS
そういうのとはちょっと違う&grepツールになっちゃうけど
TresGrepってのが入力欄でのマウス右クリックから正規表現を指定出来たり
正規表現1文字入力ごとにエラーチェック⇒NGならエラーメッセージを表示したりと
ちょっと便利
599: 2018/09/14(金)06:51 ID:LTbXVNEK(1) AAS
>>596
これいいですね。
ありがとうございます。
600: 2018/09/14(金)14:14 ID:grBP2MzP(1) AAS
TresGrep使ってみたけど良くできてる
正規表現に何かしらの思い入れがあるのが分かる気がする
特に正規表現の複数行入力が出来るのはいい
自分は複数行入力が当たり前になるべきだと前から考えていて
それが実装されててちょっと感動してしまった
601(3): 2018/09/17(月)12:06 ID:SR+usNFF(1) AAS
C#、System.Text.RegularExpressions.Regexの正規表現で
xxの中を取り出すにはどうしたらいいのでしょう?
ただし取り出したいのはトップのxxで、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです
対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx>";
試した正規表現 @"<xx>.*?[^(</yy>)]</xx>"
結果
<xx><xx><yy>111</yy></xx></xx><xx>222</xx>
<xx>333</xx>
欲しい結果
<xx><xx><yy>111</yy></xx></xx>
省2
602(2): 2018/09/17(月)13:51 ID:tNilsymD(1/2) AAS
プログラムとはちょっと違うのですが、2chMateで荒らしをNGする正規表現を作りたくて悩んでます
日本語で書くと、
"外部リンク:"又は"外部リンク:"が合わせてn回以上出てきた場合(対象は複数の改行を含む文字列)
にマッチするような正規表現って可能でしょうか?
603(1): 2018/09/17(月)14:52 ID:QtMg2HjE(1) AAS
>>601
結果と欲しい結果の違いが改行しかないような
>>602
n=3
(?si:https?:\/\/.*?){3,}
604: 602 2018/09/17(月)15:04 ID:tNilsymD(2/2) AAS
>>603
迅速なご回答ありがとうございます。
この方法でうまくいきました!
605(3): 2018/09/18(火)00:00 ID:lHFpavF+(1/2) AAS
>>601
.NET Frameworkの正規表現は知らんけど、鬼雲でなら
(?=<xx>)(<(\w+)>([^<]*|\g<-3>)*</\k<-2-0>>)
これは最低限のものでイレギュラーなものには対応しない
文字列でエスケープされてるとかコメントが入ってるとか
タグにタグ名以外の余計なものが入ってるとか(</a href=...>とか<br />とか)
ペアでないタグがあるとか(<br>のような単独タグ,<xx>と</xx>のどちらかしかないとか)
そういうのにも対応させるなら工夫して
一応、.NET Frameworkの正規表現の再帰については
外部リンク:qiita.com
606: 2018/09/18(火)00:12 ID:oPOmCM6y(1/2) AAS
ありがと。もう少し単純にできるかと思っていたけどそんなに複雑になるのね
正規表現使わずにやる方向で考えてみます
607(2): 583 2018/09/18(火)00:55 ID:t0fL3l18(1/6) AAS
>>605のリンク先見てやっつけで作ってみた
<xx>(?>(?:(?!</?xx>).)*)</xx>|<xx>((?'open'<xx>(?>(?:(?!</?xx>).)*))+(?'-open'</xx>(?>(?:(?!</?xx>).)*))+)*</xx>(?(open)(?!))
608: 2018/09/18(火)01:11 ID:0krUYS0m(1) AAS
典型的なダメ質問者だな。
609: 583 2018/09/18(火)02:17 ID:t0fL3l18(2/6) AAS
ミスってた、>>607はボツってことで・・
タグとタグの間の文字列の扱いが意外と難しい
610: 2018/09/18(火)06:08 ID:oPOmCM6y(2/2) AAS
確かにダメ質問者w
「xxが閉じる前にyyがあるときはそのxxは無視」という一見簡単そうなルールが予想以上に難しいようで
楽したいから正規表現使いたいのだけどあまり複雑になると楽じゃないからほかに逃げたくなる
611(3): 2018/09/18(火)07:04 ID:iA/s8q9i(1/5) AAS
ぶっちゃけ欲しい結果が何なのか結局よく分かってない
<xx>(?:(?<tag><(?!yy>)(?<tagname>[a-z]+)>)*\d+(?<-tag></\k<tagname>>)*(?(tag)(?!)))*</xx>
612: 2018/09/18(火)07:13 ID:oqy73oSH(1/3) AAS
ID変わった
その表現だと <xx><xx><yy>111</yy></xx>
欲しい結果は<xx><xx><yy>111</yy></xx></xx>
こういう尻切れになることが多い
613: 2018/09/18(火)07:16 ID:iA/s8q9i(2/5) AAS
どういうことよ
>>611の正規表現で <xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx> にマッチングすると
<xx>222</xx> と <xx>333</xx> にマッチするでしょ?
<xx><xx><yy>111</yy></xx> はどこから出てきたの?
614: 2018/09/18(火)07:42 ID:oqy73oSH(2/3) AAS
申し訳ないミス。"<xx>.*?</xx>"の1件目の結果だったw
その正規表現だと2件マッチ
欲しい結果は>>601にある3件
615: 2018/09/18(火)07:46 ID:iA/s8q9i(3/5) AAS
> xxが閉じる前にyyがあるときは
これは直前ってこと?
<xx><yy>111</yy></xx> にはマッチしないってことでいいの?
616: 2018/09/18(火)07:55 ID:lHFpavF+(2/2) AAS
>ただし取り出したいのはトップのxxで
これだけで<yy></yy>があろうがなかろうが良いと俺は思ったんだけど
617(2): 2018/09/18(火)08:27 ID:iA/s8q9i(4/5) AAS
yyがどうでもよければ
<xx>(?:(?:<(?<tag>[a-z]+)>)*\d+(?:</(?<-tag>\k<tag>)>)*(?(tag)(?!)))*</xx>
かなぁ
618: 2018/09/18(火)08:36 ID:oqy73oSH(3/3) AAS
閉じる前というのは直前という意味で
対象が"<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx><xx><yy>444</yy></xx>"
の場合は、<xx><yy>444</yy></xx>を無視したの3件マッチにしたい
>>611と>>617ベースできそうだからがんばってみます。ありがとう
619: 2018/09/18(火)09:00 ID:iA/s8q9i(5/5) AAS
まぁスタック使う構文が必要な時点で正規表現向きでないのは間違いない
620: 583 2018/09/18(火)12:56 ID:t0fL3l18(3/6) AAS
本来の数学的な正規表現という意味では向いてる質問なんだけどね
これぞ正規表現の仕事っていう質問
でもプログラムの検索で使う正規表現ではなかなか使われないね
621: 583 2018/09/18(火)13:25 ID:t0fL3l18(4/6) AAS
>>607を修正
<xx>(?>(?:(?!</?xx>).)*)((?'open'<xx>(?>(?:(?!</?xx>).)*))+(?'-open'</xx>(?>(?:(?!</?xx>).)*))+)*</xx>(?(open)(?!))
これは>>605のリンク先の例を↓のように書き換えただけ
< を <xx>・・・
> を </xx>・・・
\A を <xx>
\z を </xx>
「・・・」 は<xx>または</xx>の間に挟まれている文字列
省2
622: 583 2018/09/18(火)13:29 ID:t0fL3l18(5/6) AAS
間違い
\A を <xx>
正しくは
\A を <xx> ・・・
623: 583 2018/09/18(火)18:51 ID:t0fL3l18(6/6) AAS
>>611のはミスってるね
<xx><b><a>111</a></a></xx> にマッチする
<xx><b><a>111</a></b></xx> にマッチしない
この問題は>>617で修正されてる
()* \d+ ()* のところが0回以上のループで正しく動くのは面白いな
一番外側の (?: )* はいらないかも
上下前次1-新書関写板覧索設栞歴
あと 379 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s