【发布时间】:2016-04-18 18:49:42
【问题描述】:
我正在尝试创建一个正则表达式来检查标签是否在文本中,但是有几个标签(来自数千个,不要问我为什么,SEO 专家告诉我的客户它很好)以括号结尾。
正则表达式对普通标签很有效,但在括号中普通失败,因为匹配必须是精确的,所以我不得不使用单词边界。有没有办法允许这样做?
这是我使用的原始正则表达式:
https://regex101.com/r/wN9jO8/1
这就是我尝试过的(是的,我不擅长正则表达式,但我尝试了谷歌搜索并没有发现任何真正有用的东西):
https://regex101.com/r/wN9jO8/2
我也尝试过修改单词边界,但没有正常工作(总是匹配标签前后的一个字符串)。
基本上,对于标签text (jadad):
lipsum is a dummy text (jadad) alsdasldk. // match
lipsum is a dummy text (jadad). // match
lipsum is a dummy text (jadad) // match
lipsum is a dummy (text (jadad)) // match
lipsum is a dummy text (jadad // should not match
lipsum is a dummy text jadad) // should not match
lipsum is a dummy text (jadad)asd // should not match
主要问题是,对于带括号和不带括号的标签,它必须完全正常工作,理想情况下可以轻松编辑以支持标签中更奇怪的字符([ 或 > 或以 . 或 ? 或 ! 结尾的标签)。
我现在真的迷路了。如果您需要更多信息,请发表评论,我会尝试添加。
感谢您的帮助。
【问题讨论】:
-
什么是
tag?(jadad)是针吗? -
@chris85 抱歉,我将其添加到问题中。它在 regex101 链接中,但我忘了在这里添加它。
-
也许
text \(jadad\)[^a-zA-Z]? regex101.com/r/wN9jO8/4