How can I create a regex that parses all lines of a string for a substring, and returns a match only if the substring is not found?
我正在尝试构建一个正则表达式,但我发现对于这种特殊情况很难做到这一点。仅当我尝试解析的字符串不包含特定子字符串时,我才想返回匹配项。例如(搜索不区分大小写的子字符串"test"):
1 2 3 4 5 6 7 8 9 10 11 | "Line one Line two Line test three" - Return false. "Line test one" - Return false. "Tfest" - Return true. "Tfest Tdhf Line three" - Return true. |
我已经能够使用
PS:我不想就使用字符串操作与正则表达式展开辩论。性能是一个问题。问题的约束是解决方案必须使用正则表达式。
您可以使用标志
1 |
问题是点与换行符不匹配。
正如 Jerry 所建议的,您可以使用单行模式(或 dotall 模式)来允许点匹配换行符。
另一种方法是避免使用点,例如单词 "test":
1 | ^(?>[^t]+|\\Bt|t(?!est\\b))*$ |
请注意,这种方式的性能更高,因为只有在单词边界前面有一个 "t" 时才会测试前瞻。 ( vs 在每个字符上使用