2010-04-17 19 views
0

我有HTML,我需要提取零件數,在HTML的樣子:Java的正則表達式來獲取零件號

javascript:selectItem('ABC123   1', '..... 

我需要從上面的ABC123。

我的代碼片段:

Patterp p = Pattern.Compile("?????"); 
Matcher m = p.matcher(html); 

if(m.find()) 
    partNumber = m.group(1).trim(); 

順便說一句,在模式,我怎麼逃脫字符(

我現在的報價我做\"

感謝配發!

回答

1

您可以在之前轉義(。因爲它位於String中,所以您需要轉義\,以便順序爲\\(。這應該解析片段:

Pattern p = Pattern.compile("javascript:selectItem\\('(\\w+)"); 
Matcher m = p.matcher(html); 
if (m.find()) { 
    String partNumber = m.group(1); 
} 

我認爲號碼是一個或多個單詞字符(意思是數字,字母或下劃線)。

+0

我怎麼會任何字符,但<字符相匹配? – Blankman 2010-04-17 23:23:34

+0

@Blankman'[^ <]'匹配任何字符,但匹配<<。 – cletus 2010-04-17 23:24:27

+0

那麼我會做([^ <])使它成爲一個捕獲組? – Blankman 2010-04-17 23:26:50

0

您可以使用此:

Pattern regex = Pattern.compile("(?<=selectItem\\(')\\S*",Pattern.CASE_INSENSITIVE); 
Matcher regexMatcher = regex.matcher(subjectString); 
if (regexMatcher.find()) { 
    ResultString = regexMatcher.group(1); 
}