我有文字:(PRD:TLK-XX138832)
但是我似乎找不到匹配项,并且括号引起了问题。我是正则表达式的新手,并且多次尝试以失败告终。
我认为这会起作用,但没有:\(PRD:[.]\)
难道我的理解.
不正确?
我也尝试过[a-zA-Z0-9\-]
,但这也不起作用,还有其他一些组合?
(TLK-XX138832 可以是任何东西,只要它有 PRD: 和括号。)
我有文字:(PRD:TLK-XX138832)
但是我似乎找不到匹配项,并且括号引起了问题。我是正则表达式的新手,并且多次尝试以失败告终。
我认为这会起作用,但没有:\(PRD:[.]\)
难道我的理解.
不正确?
我也尝试过[a-zA-Z0-9\-]
,但这也不起作用,还有其他一些组合?
(TLK-XX138832 可以是任何东西,只要它有 PRD: 和括号。)
是的,您的理解.
似乎不正确。它是一个特殊字符,被解释为“任何字符”。除了在字符类中(在方括号中),它的意思是“只是.
字符”。
您想要的正确正则表达式可能是:
\(PRD:[^)]*\)
这里,[^)]
是一个字符类,意思是“除)
”之外的任何字符。
您尝试做的是:
\(PRD:.*\)
但它可以匹配太多,例如,可以匹配:
(PRD:FOO) (PRD:BAR)
因为*
是贪婪的(它试图尽可能多地匹配)。
如果您的正则表达式引擎支持它,您可以尝试(更易读的)非贪婪变体:
\(PRD:.*?\)
这在功能上等同于第一个解决方案。
您需要在匹配后追加*
以指定匹配多个匹配项。
采用:
\(PRD:[A-Z0-9-]*\)