繁体   English   中英

特定格式的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM