Der String ist so zu einer Variablen fromFile
zugeordnet wird:Wie vereinfache ich meine zwei REGEX zu einem?
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>TODO write content</div>
<span class="test"></span>
<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">
<img src="../../audio/ccccc.mp3">
<img class="aaaa">
<input class="bbbb">
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
</body>
</html>
und meine Reguläre Ausdrücke sind:
final Pattern pattern = Pattern.compile("(<rt>(.+?)</rt>)|(?=(\\b(\\w*\\S)\\b)<rp>)");
final Pattern pattern2 = Pattern.compile("(?=(\\b(\\w*\\S)\\b)<rp>)");
final Matcher matcher = pattern.matcher(fromFile);
final Matcher matcher2 = pattern2.matcher(fromFile);
while(matcher.find()) {
matcher2.find();
fromFile = "<font class=\"ruby\" title=\"" + matcher.group(1) + "\"" + ">" + matcher2.group(1) + "</font>";
break;
}
if((matcher.find()) != true) {
System.out.println(fromFile);
}
Ich mag würde es machen einfach nur mit Ein Regulärer Ausdruck, der die gleiche Ausgabe erzeugt. Der erste Regex extrahiert das Element innerhalb der <rt></rt>
und der zweite erhält die Daten vor dem Tag <rp>
. Ich habe sie zugewiesen, wobei die extrahierten Daten zu matcher.group(1)
und matcher2.group(1)
gefunden wurden.
Dank sowohl die Saiten auf der gleichen Linie entsprechen @ Saravana! –