需要一个正则表达式来在Java中找到以下格式
ABC.CDB.ASD[0].QWE[0]
试过这个:\\b\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w\\[.+?\\]+\\b
但失败了。
如果我给出最后一个数组的特定长度,那么它没有边界就可以了:
\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w{3}\\[.+?\\]+
想要没有长度的边界和最后一个字。
任何人都可以帮忙吗?
答案 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
。