如何纠正这个正则表达式?

时间:2014-02-27 02:13:06

标签: java regex

我想抓住正则表达式:"cx001"" cx001"" cx001 ""cx001.""cx001,"

现在我正在尝试这个正则表达式:

"[^|\\s|>]*([a-z]{2}[0-9]+\\.?)\\b"

但我遇到的问题是:"#cx001""@cx001"也匹配。

我希望正则表达式首先接受“space”或“start string”!!!

2 个答案:

答案 0 :(得分:2)

您当前的正则表达式通过将其置于字符类[]内而误用了起始锚点。你可以像这样解决它:

(^|\s*)\b([a-z]{2}[0-9]+\.?)\b

现在你的正则表达式明确关于行的开头,之后可能会跟随零个或多个空白字符。

这是demo on ideone

答案 1 :(得分:0)

您的问题是"\\b"。多数民众赞成说,弦乐必须以空间结束。更好"\\b*""\\b?" *:0或许多,?:0或1。

"\\s*[a-z]{2}[0-9]+[\\s\\.,]*"

\\s*:可以从太空开始 [a-z]{2}:字母char完全2次 [0-9]+:数字最小值= 1最大值= ... [\\s\\.,]*:空格,点或逗号min = 0或max = ... combination。