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/