【发布时间】:2018-03-02 11:58:55
【问题描述】:
我正在尝试编写一个正则表达式,它将捕获“@”字符的所有实例,except 当两个这样的字符连续出现时(本质上是一个转义序列)。例如:
abd@ajk: @ 应该匹配
abd@@ajk: 没有匹配项
abd@@@ajk:final @ 应该匹配。
abd@@@@ajk: 没有匹配项
这几乎适用于负前瞻表达式@(?!@),除了因为第二个@ 未被消耗,两个@ 符号中的最后一个仍将匹配。我想我想要做的是向前看一个@,但如果它存在的话就消耗它;否则,请勿食用。这可能吗?
编辑:我正在使用 Javascript,不幸的是,它排除了几种好的方法:(
【问题讨论】:
-
你是替换还是匹配?顺便说一句,语言是什么?
-
另一种解决方案
@@(*SKIP)(?!)|@ -
Java 解决方法是
(?<=(?<!@)(?:@@){0,999})@(?!@) -
如果您打算“转义”未转义的
@,您可以使用(?<!@)((?:@@)*)@(?!@)and replace with$1@@。
标签: javascript regex regex-lookarounds