2014-10-01 174 views
0

我想在Java中創建一個匹配下列字符串的模式;用逗號分隔的字符串的正則表達式

String message ="%%140911,A,140929100526,S0117.6262E03647.8107,000,067,F100,4F000100,108"; 

我形成的模式與字符串不匹配。我錯過了什麼? Ihis是我迄今爲止所嘗試的模式:

private static final Pattern pattern = Pattern.compile(

     "(\\%\\%)"+"(\\d)," + // Id 
     "([AL])," + // Validity a for valid and l for invalid 
     "(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})," + // Date (YYMMDD)Time (HHMMSS) 
     "([NS])" + "(\\d{2})(\\d{2}\\.\\d+)" + "([EW])" + "(\\d{3})(\\d{2}\\.\\d+)," + //loc 
     "(\\d+)," + // Speed 
     "(\\d+)," + // Direction 
     "([FC])" + "(\\d{3})," + // temperature in Fahrenheit/celsius 
     "(\\w{8})," + // status 
     "(\\d+)"); // event 
+1

你想達到什麼樣的?只需用逗號分割字符串,並將其分配到不同的變量中。 – Braj 2014-10-01 10:45:36

+0

想要將發送到服務器的消息匹配到特定模式,但也可以選擇僅分割字符串 – user3737364 2014-10-01 10:57:33

回答

3

您在第一行中缺少+。嘗試改變

"(\\%\\%)"+"(\\d)," 

"(\\%\\%)"+"(\\d+)," 
+2

好的結果。順便說一句,@ user3737364,當你寫正則表達式時,試着從簡單的東西開始,然後使其更加複雜。如果複雜的正則表達式不起作用,請簡化它直到它開始工作。在這種情況下,你的錯誤出現在你的正則表達式的開始是一個運氣。但是,可能會有更多的錯誤,並且很難在複雜的表達中看到它們。 – AlexR 2014-10-01 10:51:26

+2

你不需要轉義'%' – 2014-10-01 10:57:36

+0

感謝它的工作 – user3737364 2014-10-01 11:00:40

相關問題