2017-06-24 52 views
1

我想寫一個正則表達式來匹配一個字符串,該字符串具有第一個10個字符的大寫字母數字,然後是一個空格和一些其他文本或一個字符串有第一個10個字母數字字符,$確實'nt似乎工作。正則表達式模式匹配不正確java

我寫了這個[A-Z0-9]{10}[\s$].*這似乎適用於具有10個字符的字符串,然後是一個空格和一些東西,但不適用於字母數字後結束的字符串。

E.g.

"MNA345QWRE ABC" gets matched 
"MNA345QWRE" not matched 

回答

1

[...]$符號字面上處理。交替使用,要求無論是「空格,然後通過一些」或「行結束」:

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

演示:https://regex101.com/r/f4ufzx/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|$).*")); 
+0

'MNA345QWRE_ABC'sill [matches](https://regex101.com/r/UlyXeh/2),它不應該。 –

+0

更新了答案.. –

+0

''''''''後'''是無意義的 –