的通用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żew是的..但問題是這個輸入是在另一個大文本,它也有很多數字,和/ \ D +/G將採取所有這些。順便說一句,我用regex101.com來練習,所以我沒有真正使用任何編程語言 –
然後仍然有2個問題:1)你會使用什麼樣的正則表達式? (Regex101有3個提供); 2)什麼是尾部邊界(何時停止收集*重要字符串*之後的數字)? –