
状況に対する解決策が思いつかないので、特定の数字シーケンスに一致する正規表現を使用します。
(102030)\d{10}
これをテストデータとして使用すると、次の一致が得られます。
75277887243040354513001
55345377243014107206375
810203087654135168 <- Match
1102030698798798477 <- Match
71020307248040361799581 <- Match
私がやろうとしているのは、文字列に 23 桁の数字がある場合を無視することですが、正規表現のみを使用してそれは可能ですか? 否定の先読みを試しましたが、実現できませんでした。
答え1
先を見据えるには、その前に何かが必要です。まずは
\d
次に、次の 22 桁の前に負の数を付けます。
(?!\d{22})
23桁の行をすべて除外します。その後、元の文字列が続きます
(102030)\d{10}
完全な正規表現は次のようになります
\d(?!\d{22})(102030)\d{10}
結果はこちらregex101.com:
答え2
\b(?!\d{23}\b)\d*((102030)\d{10})\d*\b
これは、最初のサブグループ内の一致をキャプチャします。