2016-04-12 8 views
1

文字列のセクションに特定の単語が含まれているかどうかを知る必要があります。Regex:section contains

例:私はしてJavaを使用>

<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"> 

から<fontcolor="ため 検索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