java - 如何使用 Java 中的正则表达式删除 HTML 输出文件中的空行

标签 java html regex replace format

HTML 中的输入是;

  <div>TODO write content</div>

  <span class="test"></span>
  <ruby>text1<rp>(</rp><rt>textA</rt><rp>)</rp></ruby>
  <ruby>
  text1<rp>(</rp><rt>textA</rt><rp>)</rp>
  text2<rp>(</rp><rt>textB</rt><rp>)</rp>
  text3<rp>(</rp><rt>textC</rt><rp>)</rp>
  </ruby>
  <img src="images/aaaaa.jpg"> 
  <img src="./audio/bbbbb.mp3">

需要修改成这种格式,

  <div>TODO write content</div>

  <span class="test"></span>
  <font class="ruby" title="textA">text1</font>
  <font class="ruby" title="textA">text1</font>
  <font class="ruby" title="textB">text2</font>
  <font class="ruby" title="textC">text3</font>
  <img src="images/aaaaa.jpg"> 
  <img src="./audio/bbbbb.mp3">

因此,我使用 REGEX 和 while 循环应用了这些代码;

final String REPLACE = "";

    final String REGEX_RUBY_1 = "<ruby>";
    final String REGEX__RUBY_2 = "</ruby>";
    Pattern rubyP_1 = Pattern.compile(REGEX_RUBY_1);
    Matcher rubyM_1 = rubyP_1.matcher(text);
    text = rubyM_1.replaceAll(REPLACE);

    Pattern rubyP_2 = Pattern.compile(REGEX__RUBY_2);
    Matcher rubyM_2 = rubyP_2.matcher(text);
    text = rubyM_2.replaceAll(REPLACE);

    final Pattern pattern = Pattern.compile("<rt>(.+?)</rt>",Pattern.MULTILINE);
    final Pattern pattern2 = Pattern.compile("(?=(\\b(\\w*\\S)\\b)<rp>)",Pattern.MULTILINE);
    final Matcher matcher = pattern.matcher(text);
    final Matcher matcher2=pattern2.matcher(text);

    while(matcher.find()){
          matcher2.find();
          text="<font class=\"ruby\" title=\""+matcher.group(1)+"\""+">"+matcher2.group(1)+"</font>";
          break;
    }

但是输出是,

  <div>TODO write content</div>

  <span class="test"></span>

<font class="ruby" title="textA">text1</font>
<font class="ruby" title="textA">text1</font>
<font class="ruby" title="textB">text2</font>
<font class="ruby" title="textC">text3</font>

  <img src="images/aaaaa.jpg"> 
  <img src="./audio/bbbbb.mp3">

替换很好,但格式不同,因为有空行并且替换的文本左对齐。我尝试修改一些代码并搜索了一些可能的代码来应用,似乎仍然不起作用。

最佳答案

为了缩进文件,将第一个模式更改为:

final Pattern pattern = Pattern.compile("^( +).+<rt>(.+?)</rt>",Pattern.MULTILINE);

然后像这样更改文本分配:

text=matcher.group(1)+"<font class=\"ruby\" title=\""+matcher.group(2)+"\""+">"+matcher2.group(1)+"</font>";

要消除白线,请尝试以下操作:

final String REGEX_RUBY_1 = "<ruby> *\n?";
final String REGEX__RUBY_2 = "</ruby> *\n?";

关于java - 如何使用 Java 中的正则表达式删除 HTML 输出文件中的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40275574/

相关文章:

java - getParameterAnnotations 返回空数组

javascript - 点击复制没有复制按钮

jquery - 如何用jquery删除一个字符

c# - 精确/文字单词或模式匹配正则表达式

regex - 提取位于匹配模式之后或之间的字符串

java - 在 Java Swing 中为特定组件设置 Tooltip 延迟时间

java - 这个例子中有竞争条件吗?如果是这样,如何避免?

java lang NumberFormatException 异常

javascript - 从通过 ajax 检索的 div 内部执行 javascript

javascript - jquery动态添加html字段遇到神秘问题