2013-02-12 77 views
0

我正在寻找一个单线正则表达式,它可以与可选圆括号匹配。当括号存在时,它们不应该包含在匹配模式中。如何使用可选的左括号来匹配模式?

以下粗体文字证明什么应该/不匹配:

应符合:

“标题描述(AAA123)”

“(ABC000 )标题描述“

”Title De scription DEF999

”标题 - RST321 - 说明“

不应与:

”标题描述AB123“

” 标题描述CCC456a “

“标题描述(ABE999c)”

+0

那么,你有什么尝试? – 2013-02-12 13:52:52

+1

@Rohit Jain而不是一个很好的编辑。你搞砸了。 – 2013-02-12 13:53:09

+0

@RohitJain:试过这个“()?([a-zA-Z] {3} [0-9] {3})()?”但它匹配结束字符,不管它是否包含圆括号 – 2013-02-12 14:09:26

回答

3

试试这个正则表达式:

\b[a-zA-Z]{3}\d{3}\b 

这符合:

# \b   - A word boundary, 
# [a-zA-Z]{3} - followed by 3 letters, 
# \d{3}  - followed by 3 digits, 
# \b   - followed by a word boundary. 

正则表达式不关心括号,如要求,但没有按不匹配太长的字符串。

+1

你也会匹配'___ 345'和'234456' – nhahtdh 2013-02-12 14:11:02

+0

@nhahtdh:哎呀,我没有想到'\ w'也匹配那些。编辑,谢谢! – Cerbrus 2013-02-12 14:12:24

+0

@Cerbrus:非常好,\ b是我失踪的关键。我不知道如何同时匹配空白区域或括号。谢谢。 – 2013-02-12 14:16:09