0

我有文字:(PRD:TLK-XX1388​​32)

但是我似乎找不到匹配项,并且括号引起了问题。我是正则表达式的新手,并且多次尝试以失败告终。

我认为这会起作用,但没有:\(PRD:[.]\)

难道我的理解.不正确?

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

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

4

2 回答 2

3

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

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

\(PRD:[^)]*\)

这里,[^)]是一个字符类,意思是“除)”之外的任何字符。

您尝试做的是:

\(PRD:.*\)

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

(PRD:FOO) (PRD:BAR)

因为*是贪婪的(它试图尽可能多地匹配)。

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

\(PRD:.*?\)

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

于 2012-04-28T14:36:32.877 回答
0

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

采用:

\(PRD:[A-Z0-9-]*\)
于 2012-04-28T14:36:23.430 回答