正则表达式模式匹配不正常java

时间:2017-06-24 12:09:30

标签: java regex pattern-matching

我正在尝试编写一个正则表达式来匹配具有前10个字符大写字母数字的字符串,然后是空格和其他一些文本或具有前10个字母数字字符的字符串,$似乎没有工作。

我写了这个[A-Z0-9]{10}[\s$].*,它似乎适用于具有10个字符然后是空格和一些东西的字符串,但不适用于字母结束后的字母数字。

E.g。

"MNA345QWRE ABC" gets matched 
"MNA345QWRE" not matched

2 个答案:

答案 0 :(得分:1)

$中的[...]符号按字面处理。使用交替要求“空格后跟某物”或“行尾”:

[A-Z0-9]{10}(?:\s.*|$)

演示:https://regex101.com/r/f4ufzx/1

答案 1 :(得分:1)

空间不需要尖括号,请尝试以下操作:

System.out.println("MNA345QWRE ABC".matches("[A-Z0-9]{10}(\\s|$).*"));
System.out.println("MNA345QWRE_ABC".matches("[A-Z0-9]{10}(\\s|$)*"));
System.out.println("MNA345QWRE".matches("[A-Z0-9]{10}(\\s|$).*"));