无法获得匹配,正则表达式

时间:2012-04-28 14:33:17

标签: regex

我有文字:(珠三角:TLK-XX1388​​32)

但是我似乎无法得到匹配并且括号导致问题。我是regex的新手,并多次尝试过不成功的比赛。

我认为这样可行,但却没有:\(PRD:[.]\)

我对.的理解不正确吗?

我也试过了[a-zA-Z0-9\-],但这也不起作用,还有其他一些组合?

(TLK-XX1388​​32可以是任何东西,只要它有PRD:和括号。)

2 个答案:

答案 0 :(得分:3)

是的,您对.的理解似乎不正确。它是一个特殊字符,被解释为“任何字符”。除了字符类(在方括号中),它表示“只是.字符”。

正确的正则表达式可能是您想要的:

\(PRD:[^)]*\)

此处,[^)]是一个字符类,意为“除)以外的任何字符”。

您尝试做的是:

\(PRD:.*\)

但它可以匹配太多,例如,可以匹配:

(PRD:FOO) (PRD:BAR)

因为*贪婪(它尽可能地匹配)。

如果您的正则表达式引擎支持它,您可以尝试(稍微更易阅读)非贪婪的变体:

\(PRD:.*?\)

这在功能上等同于第一种解决方案。

答案 1 :(得分:0)

您需要在匹配后附加*以指定匹配多个匹配项。

使用:

\(PRD:[A-Z0-9-]*\)
相关问题