我有一个x出现的"<DATE>"
字符串,必须替换,这很简单。
如果前面("\"
前面有"\<DATE>"
,也不能替换,也很简单:
[^\\]<DATE>
但是字符串"<DATE>"
不再匹配...
[^\\]?<DATE>
但是现在当然,字符串"\<DATE>"
是一个匹配项,因为现在反斜杠已被忽略...
我尝试了(?<!...)
之后的回溯,但是不能使用动态长度...
有办法吗?
谢谢您的帮助!
答案 0 :(得分:1)
将我的主要评论转换为答案,因为这样做很有帮助。
(?<!\\)(?:\\{2})*\K<DATE>
模式匹配:
(?<!\\)
-字符串中不立即包含反斜杠的位置(在正则表达式模式中,反斜杠与双反斜杠匹配)(?:\\{2})*
-与0个或多个双反斜杠序列匹配的非捕获组\K
-匹配重置运算符,用于将当前匹配值归零<DATE>
-匹配并使用的文字子字符串(=添加到匹配值中,并且正则表达式索引已高级)。