我无法为以下场景编写一些正则表达式。
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"));
答案 0 :(得分:1)
这是一个肮脏的解决方案它并不是真正解析html,它只是应对它的一小部分。 仅适用于快速和脏黑客。例如,此正则表达式假定.sort
和.slice
都出现在同一行。
你问题中的例子看起来一样吗?但无论如何,怎么样:
.sort
请注意,您无法使用regexp真正解析html。您只能希望处理一小部分案例。
编辑:在中间添加了一个惰性<b>
匹配器,以应对多行</b>
标记出现在一行中的情况。