不能得到这个正则表达式 - \ [pbrc:tl:[^]] * ad * \] - 工作?

时间:2016-09-12 10:38:43

标签: regex

我有以下可能的文本字符串:

[pbrc:tl:ad,xch]
[pbrc:tl:xch,ad,xyy]
[pbrc:tl:xch, xx, ad]

我需要确保“pbrc:tl:”和“ad”(在冒号之后,某处但在“]”之前搜索。所有上述示例都应该返回true。我目前正在使用以下正则表达式失败了。

\[pbrc:tl:[^]]*ad*\]

我希望对我的正则表达式进行修正。

提前谢谢。

修改

这些需要返回false:

[pbrc:st:ad]
[pbrc:tl:abc]

我将检查所提供的解决方案是否属实。首先,我不相信。

2 个答案:

答案 0 :(得分:4)

您的ad*匹配a和零个或多个d符号。您需要在最终]之前允许]以外的任意数量的字符,因此,将*替换为[^]]*

\[pbrc:tl:[^]]*ad[^]]*]
                 ^^^^^

请参阅regex demo

模式详情

  • \[ - 文字[
  • pbrc:tl: - 文字pbrc:tl:
  • [^]]* - 除]以外的零个或多个字符(在某些正则表达式中,内的]必须转义,例如在JavaScript或ICU中)
  • ad - 文字ad
  • [^]]* - 除]
  • 以外的零个或多个字符
  • ] -a literal ](可以转义,在大多数语言中,在字符类之外不需要转义)。

答案 1 :(得分:0)

你错过了广告

\[pbrc:tl:[^]]*ad[^]]*\]