特定格式的正则表达式

时间:2014-02-20 11:55:25

标签: java regex

需要一个正则表达式来在Java中找到以下格式

ABC.CDB.ASD[0].QWE[0]

试过这个:\\b\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w\\[.+?\\]+\\b

但失败了。

如果我给出最后一个数组的特定长度,那么它没有边界就可以了:

  \\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w{3}\\[.+?\\]+

想要没有长度的边界和最后一个字。

任何人都可以帮忙吗?

5 个答案:

答案 0 :(得分:1)

我认为你有太多的“+”符号。 正确的正则表达式应如下: \w{3}\.\w{3}\.\w{3}\[\d+\]\.\w{3}\[\d+\]

为什么要在“\ w {3}”之后加上“+”?

答案 1 :(得分:1)

我试过这个并且它有效。 如果要将小字母限制为大写字母,则可以删除小字母 a-z

([a-zA-Z]{3}.){2}[a-zA-Z]+\[\d+\].[a-zA-Z]+\[\d+\]$

答案 2 :(得分:0)

问题是尾随\b\b表示“单词边界” - 单词和非单词之间。除非您的目标后跟单词char,否则您将无法获得匹配。即输入必须如下:

ABC.CDB.ASD[0].QWE[0]A

+之后的跟踪]似乎也是不必要的。试试这个:

\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]\\.\\w\\[.+?\\]

答案 3 :(得分:0)

尝试这可能有所帮助:

Pattern pattern = Pattern.compile("\\w{3}\\.\\w{3}\\.\\w{3}\\[\\d{1}\\]\\.\\w{3}\\[\\d{1}\\]");

答案 4 :(得分:0)

只需在最后+之后添加\\w

\\b\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w+\\[.+?\\]+
//                                    here __^

IFAIK,最后不需要\\b