正则表达式 - 匹配主题标签(#)之外的子字符串

Regex - Match substring outside of hashtags(#)

提问人:Alejandro Cotilla 提问时间:10/12/2019 最后编辑:Alejandro Cotilla 更新时间:10/12/2019 访问量:53

问:

以这个字符串为例:

重点;焦点#焦点#焦点焦点

如果我想查找子字符串,我需要这个结果(以粗体匹配):focus

专注;焦点#焦点#焦点焦点

据我所知:,在这里演示。
这种模式显然不起作用,因为排除了旁边的子字符串,我也需要包含这些子字符串。
(?<!#)(focus)(?!#)#

从编程上讲,这就是我需要的:

if !(prefix == "#" && suffix == "#") {
    // Is a match
}
与正则表达式 语言无关的 PCRE

评论

0赞 Casimir et Hippolyte 10/12/2019
将 Lookahead 放在 LookBehind 中: 或使用回溯控制动词 Well Known Sequence:(?<!#(?=focus#))#focus#(*SKIP)(*F)|focus
1赞 Casimir et Hippolyte 10/12/2019
避免在正则表达式问题中使用与语言无关的标记(即使使用 pcre 或其他引擎标记),因为支持的功能可能因实现而异。

答:

2赞 anubhava 10/12/2019 #1

您可以使用替代:

(?<!#)focus|focus(?!#)

更新的 RegEx 演示

这意味着如果前面没有或后面没有,则匹配。只有当它两边都有时,才会跳过。focus##focus#