public class MainTest {
public static void main(String ... args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
while (m.find())
System.out.print(m.start()+" ");
System.out.println();
}
}
上面的代碼時,用下面的命令正則表達式在Java
java MainTest "\b" "^23 *$76 bc"
java MainTest "\B" "^23 *$76 bc"
java MainTest "\S" "^23 *$76 bc"
java MainTest "\W" "^23 *$76 bc"
運行不同的字符類產生
1 3 5 6 7 9
0 2 4 8
0 1 2 4 5 7 8
0 3 4 6
雖然我幾乎確信這將是
1 3 6 8 9 11
0 2 4 5 7 10
0 1 2 4 5 6 7 9 10
0 3 4 5 8
好的,所以\w
的意思是s [0-9A-Za-z_]
和\b
應匹配任何\w
和\W
邊界,並且\W
應該匹配空格和不在alnum+
下劃線的內容。那麼,爲什麼我會得到這些結果呢?我來到這裏是爲了擺脫我對Java中正則表達式的一些嚴重誤解。
@Aaron執行:這是我在說什麼。 $,b,c也都是非空格的。你有沒有嘗試在你的機器上運行我的代碼? – Ilonpilaaja
哦,是的,nvm,我看錯了結果-_- – Aaron
看起來像你的預期輸出給我時,不使用命令行參數:http://ideone.com/IbCykI – Marvin