gpt4 book ai didi

java - 用于删除特定 HTML 标签的正则表达式

转载 作者:行者123 更新时间:2023-12-01 18:35:22 24 4
gpt4 key购买 nike

我正在尝试用 Java 编写一个正则表达式来删除从 <select> 开始的所有内容。和选择结束 </>标签如下图所示。我编写了一个正则表达式来删除从 <start> 开始的所有内容标记为空,如下所示。问题是它按预期删除了除第四行 <select name="first" ... the popular 之外的所有内容。 。它删除该行中的所有内容并忽略下一行 and ... president"/> 中的内容。 。我想包含从开始标签到结束标签的所有内容。我怎样才能做到这一点?

str.replaceAll(".*<start.*", "");

实际的字符串str的内容如下所示:

<select name="id" content="2454803.html"/>
<select name="nameid" content="2454803"/>
<select name="type" content="prd"/>
<select name="first" content="In 2004, Charlie, the popular
and charismatic senator , became the first president"/>
<select name="title" content="Charlie"/>
<h1>
<!--toc:insert content="checkbox" id="_1_0"/>-->
</h1>
<p class="tocline"><a href="2454803">Table of Contents</a></p>

最佳答案

根据 Java 文档,位于 Pattern.html#lt :

The regular expression.matches any character except a line terminator unless theDOTALLflag is specified.

行终止符的含义:

  • A newline (line feed) character ('\n'),
  • A carriage-return character followed immediately by a newline character ("\r\n"),
  • A standalone carriage-return character ('\r'),
  • A next-line character ('\u0085'),
  • A line-separator character ('\u2028'), or
  • A paragraph-separator character ('\u2029).

指定 DOTALL 的最简单方法标志是添加 (?s)到正则表达式的开头。还需要进行一些更改来适应此标志,因此最终的正则表达式将是 (?s)<select.*?>\r?\n? ,应用如下

str.replaceAll("(?s)<select.*?>\\r?\\n?", "");

演示在这里:http://regex101.com/r/bW8aR7

或者,您可以使用正则表达式 <select[^>]*>\r?\n? ,像这样:

str.replaceAll("<select[^>]*>\\r?\\n?", "");

演示在这里:http://regex101.com/r/lO6mQ6

关于java - 用于删除特定 HTML 标签的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22236709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com