正则表达式不能正常工作html标签

时间:2016-06-07 16:55:27

标签: java regex

我无法为以下场景编写一些正则表达式。

1:This is <b>My Text</b> some other <b> </b> text as well <b></b><b>non empty tag1</b> other text

预期输出: some other <b> </b> text as well <b></b>

2:This is <b>My Text</b> some other <b> </b> text as well <b></b><b>non empty tag2</b> other text

预期输出: some other <b> </b> text as well <b></b>

在这里,如果您注意到文本我的文本是修复(静态),但第二个非空标记值可能会有所不同。正则表达式应该能够在<b>My Text</b>和第一次出现非空<b>标记之间提取文本。

我自己已经尝试了很多,但却无法实现同样的目标。等待一些回应。

更新: 我的尝试如下。

    String BOLD_START_TAG = "(\\<b\\>)";
    String BOLD_END_TAG = "(\\<\\/b\\>)";
    StringBuffer regexBuffer = new StringBuffer("^(.*)")
                    .append(BOLD_START_TAG)
                    .append(regex)
                    .append(BOLD_END_TAG)
                    .append("(.*)")
                    .append(BOLD_START_TAG)
                    .append(nextElementString)
                    .append(BOLD_END_TAG)
                    .append("(.*)$");
 String regex = regexBuffer.toString();
 System.out.println(myText.replaceAll(regex, "$5"));

1 个答案:

答案 0 :(得分:1)

这是一个肮脏的解决方案它并不是真正解析html,它只是应对它的一小部分。 仅适用于快速和脏黑客。例如,此正则表达式假定.sort.slice都出现在同一行。

你问题中的例子看起来一样吗?但无论如何,怎么样:

.sort

请注意,您无法使用regexp真正解析html。您只能希望处理一小部分案例。

编辑:在中间添加了一个惰性<b>匹配器,以应对多行</b>标记出现在一行中的情况。