いくつかのテキストとの間に複数のオカレンスと一致する汎用PCREアプローチは、以前の成功したマッチの終わりにマッチを固定可能\G
ベースパターンを使用することである。
(?:\G(?!\A)|(?<!\bnot)important string)(?:(?!not important string)\D)*?\K\d+
はregex demo
を見ます基本的には、
(?s)(?:\G(?!\A)|STARTING_DELIMITER_STRING)(?:(?!END_DELIMITER_STRING).)*?\K\d+
または、最初のSTARTING_DELIMITER_STRING
の範囲内にとどまるためにアリエス、負の先読みに追加:
(?s)(?:\G(?!\A)|STARTING_DELIMITER_STRING)(?:(?!STARTING_DELIMITER_STRING|END_DELIMITER_STRING).)*?\K\d+
詳細:
(?:\G(?!\A)|(?<!\bnot)important string)
- 前回成功したマッチ(\G(?!\A)
)の端部又はnot
+と先行しないimportant string
リテラル文字列のいずれかスペース
(?:(?!not important string)\D)*?
- 数字(\D
)以外の任意の文字、の開始点ではない0+発生文字列
\K
- マッチリセットオペレータ
\d+
- あなたの入力から判断1+桁
、あなただけの '/ \ D +/G'を使用することができます。文字列にプログラミング言語の手段で '重要な文字列'が含まれているかどうかを確認することができます。プログラミング言語とは何ですか? –
@WiktorStribiżeyea ..しかし、問題は、この入力が数字の数が多い別の大きなテキストにあり、/ \ d +/gがそれらのすべてをとることです。ところで、私はregex101.comを使って練習しましたので、実際にプログラミング言語を使用していませんでした。 –
次に2つの質問があります:1)どの正規表現の味を使用しますか? (Regex101には3があります)。 2)末尾の境界は何ですか(*重要な文字列*の後の数字の収集を停止するとき)? –