使用正则表达式匹配HTML

问题描述

| 这是输入的HTML字符串:

Johnny:我最喜欢的颜色是粉红色
莎拉:我最喜欢的颜色是蓝色
约翰尼:让我们交换性别吗?
莎拉:好!
我想正则表达式匹配上面的粗体部分。基本上,找到\“> \”(或行首)和\“:\”之间的任何匹配项 我将此正则表达式设置为“ 0”,但无法正常工作,将以下部分加粗,包括

标记。我不想匹配任何HTML标签:

Johnny:我最喜欢的颜色是粉红色
莎拉:我最喜欢的颜色是蓝色
约翰尼:让我们交换性别吗?
莎拉:好!
我正在使用Java,其代码如下:

Matcher m = Pattern.compile(\"`(?>)[^>](.+):`\",Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL).matcher(string); 
    

解决方法

以下代码应该工作:
String str = \"<p>Johnny Smith: My favorite color abc: is pink<br />\" +
\"Sarah: My favorite color is dark: blue<br />\" +
\"Johnny: Let\'s swap: genders?<br />\" +
\"Sarah: OK: sure!<br />\" +
\"</p>\";

Pattern p = Pattern.compile(\"(?:>|^)([\\\\w\\\\s]+)(?=:)\",Pattern.MULTILINE);
Matcher m = p.matcher(str); 
while(m.find()){
    System.out.println(m.group(1));
}
输出值
Johnny Smith
Sarah
Johnny
Sarah
    ,如果您想在单词后跟\':\'进行匹配,则\“ \\ w +:\”应该足够了。但是,如果要包含\'> \'可能性,可以尝试:
        String s = \"<p>Johnny: My favorite color is pink<br />\" +
            \"Sarah: My favorite color is blue<br />\" +
            \"Johnny: Let\'s swap genders?<br />\" +
            \"Sarah: OK!<br />\" +
            \"</p>\";

    Pattern p = Pattern.compile(\"[>]?(\\\\w+):\");
    Matcher m = p.matcher(s); 
    while(m.find()){
        System.out.println(m.start()+\" : \"+m.group(1));
    }
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...