2013-02-12 38 views
0

一般情況: 我在使用String.matches(「string」)時遇到了匹配「/」的麻煩。 我假設我錯過了某種程度的逃跑。在JAVA正則表達式中正斜槓

matches("bar" + "[\\W\\w]*"); //works. 
matches("bar/" + "[\\W\\w]*"); //does not work. 
matches("bar\/" + "[\\W\\w]*"); //errors 
matches("bar\\/" + "[\\W\\w]*"); //does not work 
matches("bar\\\\/" + "[\\W\\w]*"); //does not work 

我錯過了什麼?

確切情況:

private static final String CHECK_TABLE_PRE = "<table class=\"data playerStats\">\n <thead>\n <tr>\n <th colspan=\"1\" rowspan=\"1\">&nbsp;</th>\n <th colspan=\"1\" rowspan=\"1\">G</th>\n <th colspan=\"1\" rowspan=\"1\">A</th>\n <th colspan=\"1\" rowspan=\"1\">P</th>\n <th colspan=\"1\" rowspan=\"1\">+/-</th>\n <th colspan=\"1\" rowspan=\"1\">PIM</th>\n <th colspan=\"1\" rowspan=\"1\">PPG</th>\n <th colspan=\"1\" rowspan=\"1\">SHG</th>\n <th colspan=\"1\" rowspan=\"1\">S</th>\n <th colspan=\"1\" rowspan=\"1\">S%</th>\n <th colspan=\"1\" rowspan=\"1\">Shifts</th>\n <th colspan=\"1\" rowspan=\"1\">TOI</th>\n <th colspan=\"1\" rowspan=\"1\">FO%</th>\n </tr>\n</thead>\n<tbody>\n <tr>"; //want to use this, but the "/" makes it fail 
private static final String CHECK_TABLE_POST = " </tr>\n </tbody>\n</table>"; //Both gotten by copy/pasting from the console. 
System.out.println(table.outerHtml().matches("<table class=\"data playerStats\">\n <thead>\n <tr>\n <th colspan=\"1\" rowspan=\"1\">&nbsp;</th>\n <th colspan=\"1\" rowspan=\"1\">G</th>\n <th colspan=\"1\" rowspan=\"1\">A</th>\n <th colspan=\"1\" rowspan=\"1\">+" + "[\\W\\w]*" + CHECK_TABLE_POST)); 
//This works, but I cannot add a add the "/" without getting it to fail. 

//Where table = Jsoup.connect("http://www.nhl.com/ice/player.htm?view=log&id=8470598").get().select("table.data.playerStats").get(0); 

OK,下面是一個更小更自給式例如:

String test = "<table class=\"data playerStats\">\n <thead>\n <tr>\n <th colspan=\"1\" rowspan=\"1\">&nbsp;</th>\n <th colspan=\"1\" rowspan=\"1\">G</th>\n <th colspan=\"1\" rowspan=\"1\">A</th>\n <th colspan=\"1\" rowspan=\"1\">P</th>\n <th colspan=\"1\" rowspan=\"1\">+/-</th>\n <th colspan=\"1\" rowspan=\"1\">PIM</th>\n <th colspan=\"1\" rowspan=\"1\">PPG</th>\n <th colspan=\"1\" rowspan=\"1\">SHG</th>\n <th colspan=\"1\" rowspan=\"1\">S</th>\n <th colspan=\"1\" rowspan=\"1\">S%</th>\n <th colspan=\"1\" rowspan=\"1\">Shifts</th>\n <th colspan=\"1\" rowspan=\"1\">TOI</th>\n <th colspan=\"1\" rowspan=\"1\">FO%</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020168\"> Feb 10 '13 </a> BOS @ BUF</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">-1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\"><span>0.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">22</td>\n <td colspan=\"1\" rowspan=\"1\">15:23</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020161\"> Feb 9 '13 </a> BUF @ NYI</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">3</td>\n <td colspan=\"1\" rowspan=\"1\"><span>33.3</span></td>\n <td colspan=\"1\" rowspan=\"1\">26</td>\n <td colspan=\"1\" rowspan=\"1\">21:47</td>\n <td colspan=\"1\" rowspan=\"1\"><span>100.00</span></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020141\"> Feb 7 '13 </a> MTL @ BUF</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">-1</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">8</td>\n <td colspan=\"1\" rowspan=\"1\"><span>25.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">25</td>\n <td colspan=\"1\" rowspan=\"1\">23:56</td>\n <td colspan=\"1\" rowspan=\"1\"><span>100.00</span></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020132\"> Feb 5 '13 </a> BUF @ OTT</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">-1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\"><span>0.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">23</td>\n <td colspan=\"1\" rowspan=\"1\">20:15</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020121\"> Feb 3 '13 </a> FLA @ BUF</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">3</td>\n <td colspan=\"1\" rowspan=\"1\">3</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\"><span>100.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">24</td>\n <td colspan=\"1\" rowspan=\"1\">19:15</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020109\"> Feb 2 '13 </a> BUF @ MTL</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">4</td>\n <td colspan=\"1\" rowspan=\"1\"><span>25.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">19</td>\n <td colspan=\"1\" rowspan=\"1\">17:20</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020092\"> Jan 31 '13 </a> BUF @ BOS</td>\n <td colspan=\"1\" rowspan=\"1\">3</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">5</td>\n <td colspan=\"1\" rowspan=\"1\">4</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">4</td>\n <td colspan=\"1\" rowspan=\"1\"><span>75.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">21</td>\n <td colspan=\"1\" rowspan=\"1\">19:21</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020079\"> Jan 29 '13 </a> TOR @ BUF</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">-1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">4</td>\n <td colspan=\"1\" rowspan=\"1\"><span>0.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">27</td>\n <td colspan=\"1\" rowspan=\"1\">23:01</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020051\"> Jan 25 '13 </a> CAR @ BUF</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">-1</td>\n <td colspan=\"1\" rowspan=\"1\">6</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">6</td>\n <td colspan=\"1\" rowspan=\"1\"><span>16.7</span></td>\n <td colspan=\"1\" rowspan=\"1\">22</td>\n <td colspan=\"1\" rowspan=\"1\">17:55</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020043\"> Jan 24 '13 </a> BUF @ CAR</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">-1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\"><span>0.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">21</td>\n <td colspan=\"1\" rowspan=\"1\">18:45</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020023\"> Jan 21 '13 </a> BUF @ TOR</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">3</td>\n <td colspan=\"1\" rowspan=\"1\"><span>0.0</span></td>\n <td colspan=\"1\" rowspan=\"1\">23</td>\n <td colspan=\"1\" rowspan=\"1\">18:52</td>\n <td colspan=\"1\" rowspan=\"1\"></td>\n </tr>\n <tr>\n <td colspan=\"1\" rowspan=\"1\"><a class=\"undMe\" href=\"/ice/recap.htm?id=2012020014\"> Jan 20 '13 </a> PHI @ BUF</td>\n <td colspan=\"1\" rowspan=\"1\">2</td>\n <td colspan=\"1\" rowspan=\"1\">3</td>\n <td colspan=\"1\" rowspan=\"1\">5</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">1</td>\n <td colspan=\"1\" rowspan=\"1\">0</td>\n <td colspan=\"1\" rowspan=\"1\">9</td>\n <td colspan=\"1\" rowspan=\"1\"><span>22.2</span></td>\n <td colspan=\"1\" rowspan=\"1\">26</td>\n <td colspan=\"1\" rowspan=\"1\">19:17</td>\n <td colspan=\"1\" rowspan=\"1\"><span>100.00</span></td>\n </tr>\n </tbody>\n</table>"; 
System.out.println(test.matches("<table class=\"data playerStats\">\n <thead>\n <tr>\n <th colspan=\"1\" rowspan=\"1\">&nbsp;</th>\n [\\w\\W]*")); 
System.out.println(test.matches("<table class=\"data playerStats\">\n <thead>\n <tr>\n <th colspan=\"1\" rowspan=\"1\">&nbsp;</th>\n <th colspan=\"1\" rowspan=\"1\">G</th>\n <th colspan=\"1\" rowspan=\"1\">A</th>\n <th colspan=\"1\" rowspan=\"1\">P</th>\n <th colspan=\"1\" rowspan=\"1\">+/-[\\w\\W]*")); 
System.out.println(test.matches(test)); 

//Console return "true \n false \n false" (without the spaces). 

OK,包涵在這裏。較短的例子:

String test = "foo+/-bar"; 
System.out.println(test.matches("foo+[\\w\\W]*")); 
System.out.println(test.matches("foo+/[\\w\\W]*")); 
System.out.println(test.matches("foo+/-bar[\\w\\W]*")); 
System.out.println(test.matches(test)); 
//true false false false 
//But if I leave out the +-, so that String test = "foo/bar"; (and change the rest of the example accordingly) the whole example work (returns true). 

所以,有一些奇怪的「+ /」。也許我必須逃避加分。

+0

沒有必要逃避「/」在需要\+ ,'matches(「bar/[\\ W \\ w] *」);'應該沒問題。或者把SSCCE放在這裏讓你的問題更清楚。 – shuangwhywhy 2013-02-12 17:06:25

+0

是的,這是加分。將「+/-」更改爲「\\ +/-」固定它。 – Jonathon 2013-02-12 17:38:32

+1

你可以發現這些字符必須「引用」Java正則表達式:http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html,如果你不確定那個字符必須被轉義,你可以把它放在'[]'中,比如'[+]'。 – shuangwhywhy 2013-02-12 17:50:04

回答

1

因此,「+ /」有些奇怪。也許我必須逃避加分。

是的,你這樣做。 +在正則表達式是指一個或多個前面的事情,所以要匹配一個加號,你在正則表達式,這意味着\\+的Java字符串字面

test.matches("foo\\+/-bar[\\w\\W]*" 
7

無需在JAVA中轉義/

matches()自錨 *與^$格局。

".*bar/.*"應該適合您的需求。


* String#matches()調用Pattern#matches(),它調用Matcher#matches()which explains thattrue返回如果,且僅當整個區域序列此匹配器模式匹配。

相關問題