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

时间:2014-08-07 21:27:38

标签: regex

我正在尝试解析字符串并在#之间返回内容,但前提是#前面没有\

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

  

这是#date #test。

使用#.*#我能够检索我想要的测试。但是,请给这个字符串:

  

这是一个\ #date #test。

我不希望它返回,因为反斜杠在#前面。到目前为止,我想出了:

[^\\](#.*.#)

但是,当测试字符串中不存在反斜杠时,它最终会抓取#前面的任何字符。有没有办法从测试字符串中获取“#date#”部分,但前提是它前面没有黑色标记?

2 个答案:

答案 0 :(得分:3)

您可以为您的案例使用正则表达式lookbehind。

您可以使用此正则表达式:

(?<!\\)#(.*?)#

<强> Working demo

enter image description here

答案 1 :(得分:2)

您可以使用以下正则表达式。

\\#|#(.*?)#

注意:您可以从捕获论坛#1

访问您的匹配结果

Live Demo