正则表达式 - 如果匹配项前面有特定字符,则排除该匹配项

3
我试图解析一个字符串并返回在#之间的内容,但仅当#不是由\前导时。

例如,我在regexr.com上使用以下测试字符串:

This is a #date# test.

使用#.*#,我能够检索到所需的测试。然而,给定这个字符串:

This is a \#date# test.

由于反斜杠位于#之前,我不想要它作为结果返回。因此,我想到了以下解决方案:
[^\\](#.*.#)

然而,当测试字符串中没有反斜杠时,它最终会抓取 # 前面的任何字符。是否有办法仅从测试字符串中获取“#date#”部分,但仅当它不以反斜杠为前缀?
2个回答

3
您可以使用正则表达式的“后顾”功能来解决您的问题。
您可以使用以下正则表达式:
(?<!\\)#(.*?)#

实际演示

在此输入图片描述


2
您可以使用以下正则表达式。
\\#|#(.*?)#

注意: 你可以通过捕获组#1来访问匹配结果。

演示链接


通用!真正利用RegEx引擎的优势 - CSᵠ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接