我需要知道字符串的一部分是否包含特定的单词。
实施例:
在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()
答案 0 :(得分:3)
答案 1 :(得分:2)
根据您提供的示例测试用例,您可以使用这样的简单正则表达式:
<font[^>]*color="[^"]+"[^>]*>
演示:http://jpad.io/example/1u/36573959-example
但是,正如评论中所指出的,正则表达式通常不适合处理HTML。
答案 2 :(得分: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
答案 3 :(得分: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