php - 正则表达式匹配带括号的词边界字符串

标签 php regex

我正在尝试创建一个正则表达式来检查标签是否在文本中,但是有几个标签(来自数千个,不要问我为什么,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

主要问题是,对于带括号和不带括号的标签,它必须完美地工作,理想情况下可以轻松编辑以支持标签中更多奇怪的字符([ 或 > 或以 . 或 ? 或 ! 结尾的标签)。

我现在真的很失落。如果您需要更多信息,请发表评论,我会尝试添加它。

感谢帮助。

最佳答案

您可以使用负前瞻 (?!\w) (意味着下一个位置没有字符字符)。请注意,您不能使用 \b,因为 \b 不能在被视为非单词字符的 ) 之后断言:

\btext \(jadad\)(?!\w)

Updated Regex Demo

关于php - 正则表达式匹配带括号的词边界字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36702016/

相关文章:

php - 使用 php 集成附加链接

javascript - 在 PHP 验证之前加载 JS 函数

php - drupal 7 自定义架构错误日期时间

php - 如何使用/web 以外的 web 根目录部署 yii2

php - 在不使用 eval() 的情况下找到字符串方程的答案

javascript - 正则表达式排除美元符号和数字中的点

php - 在 php 中可以通过索引访问当前数组的元素吗?

javascript - 正则表达式正负十进制数,逗号分隔

使用正则表达式替换最后一次出现的字符串(并且仅替换字符串)

javascript - 在 javascript 中搜索对象键值时使用正则表达式