的通用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)什么是尾部边界(何时停止收集*重要字符串*之后的数字)? –