【发布时间】:2023-03-25 02:12:01
【问题描述】:
我有一个这样的多行字符串:
SA21 abcdef
BKxyz
SA21 abcdef
我需要一个仅当^SA21 abcdef$ 行出现一次时才匹配的正则表达式。所以它不应该匹配第一个例子,但它应该匹配这个:
BK udsia
SA21 abcdef
BKxyz
我试图捕获该行并确保它仅在以后找不到同一行时才匹配:/(^SA21 abcdef$)(?!\1)/m regex101 但这不起作用,因为它可能总是匹配最后一行...
【问题讨论】:
-
试试
\A(?:(?!^SA21 abcdef$).)*(^SA21 abcdef$)(?:(?!^SA21 abcdef$).)*\z(只是想知道这是否是正确的方向)。 -
为什么不直接匹配它,然后检查有多少匹配项,然后将
if设为? -
@FlorianPeschka 我不能轻易使用代码,因为我们使用来自 dsl 的正则表达式
-
@WiktorStribiżew 看起来不错...让我测试一下
-
为什么要求不要重复字符串? :) 我认为你应该问如何让它更快、更高效、更健壮。