2016-04-12 113 views
1

我需要知道某個字符串的某個部分是否包含特定的單詞。正則表達式:部分包含

例: 搜索color="<font>

<font color="black">         = <font color="black"> 
BlaBla <font color="red">       = <font color="red"> 
<font size="2" color="white">      = <font size="2" color="white"> 
<font size="2">          = false 
<font size="10"><font color="black"><font size="10"> = <font color="black"> 

我用Java與String.matches()

+1

你想要得到的顏色值? – Hackerdarshi

+0

@Hackerdarshi不,我需要知道是否有一個帶有顏色的HTML標籤 Wavum

+1

在這個用例中,JSoup看起來比正則表達式更強大。 –

回答

2

只是根據您的例子測試用例提供,你也許可以用一個簡單的正脫身像這樣的表達:

<font[^>]*color="[^"]+"[^>]*> 

演示:http://jpad.io/example/1u/36573959-example

但是,正如在註釋中指出的那樣,正則表達式通常不太適合處理HTML。

3

對於解析HTML,應該更好地使用JSOUP。快速介紹從cookbook開始。

1

嘗試以下的正則表達式:

(?<=\<)(\w+)[^<]*color.*?\> 

演示:

String data = "<font color=\"black\">"; 
String strFind = "color"; 

Pattern regex = Pattern.compile("(?<=<)(\\w+)[^<]*"+strFind+".*?>", Pattern.MULTILINE); 

Matcher matcher = regex.matcher(data); 
while (matcher.find()) { 
    String content = matcher.group(1) == null ? matcher.group() : matcher.group(1); 
    System.out.println(content); 
} 

提供的示例文本,將打印含有所需的字符串標籤的名稱。在這種情況下,它將是font

2

你可以使用正則表達式來處理,但這是危險的。

另一方面,JSOUP旨在用於該用例並且非常易於使用。

例子:

public static void main(String[] argv) throws Exception { 
    Document document = Jsoup.parse("<font id=\"myFont\" color=\"black\">"); 
    Elements font = document.select("font"); 
    for (Element element : font) { 
    System.out.println(element.attr("color")); 
    } 

} 

輸出:

black