[英]Regular Expression for particular format
需要一个正则表达式来在Java中查找以下格式
ABC.CDB.ASD[0].QWE[0]
试过这个: \\\\b\\\\w{3}+\\\\.\\\\w{3}+\\\\.\\\\w{3}\\\\[.+?\\\\]+\\\\.\\\\w\\\\[.+?\\\\]+\\\\b
但失败了。
没有边界,如果我给出最后一个数组的特定长度,它是有效的:
\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w{3}\\[.+?\\]+
想要没有长度的边界和最后一个字。
有人可以帮忙吗?
我认为你有太多的“+”符号。 正确的正则表达式应如下: \\w{3}\\.\\w{3}\\.\\w{3}\\[\\d+\\]\\.\\w{3}\\[\\d+\\]
为什么要在“\\ w {3}”之后加上“+”?
我尝试了这个,它的工作原理。 如果要将其限制为大写字母,可以删除小写字母az 。
([a-zA-Z]{3}.){2}[a-zA-Z]+\[\d+\].[a-zA-Z]+\[\d+\]$
问题是尾随\\b
。 \\b
表示“单词边界” - 单词和非单词之间。 除非您的目标后跟单词char,否则您将无法获得匹配。 即输入必须如下:
ABC.CDB.ASD[0].QWE[0]A
也尾随+
后]
似乎是不必要的。 尝试这个:
\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]\\.\\w\\[.+?\\]
试试这可能有所帮助:
Pattern pattern = Pattern.compile("\\w{3}\\.\\w{3}\\.\\w{3}\\[\\d{1}\\]\\.\\w{3}\\[\\d{1}\\]");
只需在最后一个\\\\w
后加一个+
:
\\b\\w{3}+\\.\\w{3}+\\.\\w{3}\\[.+?\\]+\\.\\w+\\[.+?\\]+
// here __^
IFAIK,最后没有\\\\b
需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.