2013-05-10 58 views
-1
String pat = "^(?!US\\b)(\\w{2})(.*)$"; 
Pattern pattern = Pattern.compile(pat); 

Matcher matcher = pattern.matcher("US 123"); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

为什么我不能在Java中执行此操作?然后,我使用什么来匹配Java RegExp中的开始和结束元字符?Java正则表达式开始和结束元数据字符错误

+5

你是什么意思,不能在Java中使用它? – Elmer 2013-05-10 20:11:40

+0

当您尝试使用它时会发生什么?你会得到一个例外,或者没有匹配,或者是什么? – Adrian 2013-05-10 20:25:27

回答

0

你的问题还不清楚。看起来你正试图匹配字母US后跟一个边界字符。在这种情况下,你可以使用:

String pat = "(\\w{2}\\b)(.*)"; 

起点线锚&末结束在这种情况下不必要的,因为你使用Matcher#find

+0

'当你使用Matcher#find'时,线锚的开始和结束是不必要的,我想你会把'find'与'matches'混淆。 – 2013-05-10 20:30:28

+0

每当你想匹配完整的输入,而不是其子序列。 – 2013-05-10 21:39:56

+0

我不认为我指出的路线表达了相同的意思。那是误导。 – 2013-05-10 21:48:35

0

我想你期待在这里找到一个匹配(组(1)= 123),但由于字符串以US开头,因此您正在执行的否定预测^(?!US\\b)将不会通过。这也证明了输入元字符的开始^和结束$对于Java中的正则表达式工作正常。

相关问题