2017-04-10 13 views
0

正規表現が初めてで、一致する文字列の後にすべての数字を選択する方法があるかどうかを知りたいですか?例えばregex文字列の後のすべての数字を選択

入力:

important string abc 100 def 50 ghi jk 10 m 60 not important string aa 90 bb 20

、出力として、私はすべてのこれらの数字を選択します:100、50、10、60

私はimportant string[\w\n ]* (\d+)で試してみましたしかし、私は60だけ持って

ありがとう!

+0

、あなただけの '/ \ D +/G'を使用することができます。文字列にプログラミング言語の手段で '重要な文字列'が含まれているかどうかを確認することができます。プログラミング言語とは何ですか? –

+0

@WiktorStribiżeyea ..しかし、問題は、この入力が数字の数が多い別の大きなテキストにあり、/ \ d +/gがそれらのすべてをとることです。ところで、私はregex101.comを使って練習しましたので、実際にプログラミング言語を使用していませんでした。 –

+0

次に2つの質問があります:1)どの正規表現の味を使用しますか? (Regex101には3があります)。 2)末尾の境界は何ですか(*重要な文字列*の後の数字の収集を停止するとき)? –

答えて

2

いくつかのテキストとの間に複数のオカレンスと一致する汎用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+桁
関連する問題