Dieser Artikel beschreibt die chinesischen Charaktere im Tag -A -regulären Spiel in Java. Teilen Sie es für Ihre Referenz wie folgt weiter:
Heute stellte ein Freund in der Gruppe eine Frage zu regulären Ausdrücken, die den folgenden Inhalt enthält:
<a href = 'www.baidu.comds = id32434#comment'rewr> Special432 </a> 453543 <a guhll ,, l> a1special123 Sind Sie? </a> <a href = id = 32434#comment'ewrer> Team 2 </a> <a> Text 2 </a> <a> Titel </a>
Jetzt möchten Sie die chinesischen Charaktere im <a> -Tag übereinstimmen, deren Inhalt Chinesen enthält, deren Attribute jedoch keinen Kommentar enthalten.
Die Lösung lautet wie folgt:
1. Übereinstimmung zuerst mit dem <a> Tag, das keinen Kommentar enthält.
2. Machen Sie ein quadratisches Spiel im passenden Ergebnis, um Chinesen zu produzieren;
Der Code ist wie folgt:
Paket com.mmq.regex; import java.util.regex.matcher; import java.util.regex.pattern; 1.6.0* @Version 1.0*/public class MatchchineScharacters {/*** Basierend auf der Eingabe enthält die chinesischen Zeichen im <a> -Tag, die Chinesisch enthält, aber keinen Kommentar enthält* @param Source -Inhalt, der übereinstimmt. "<a ((?! Kommentar).)*?> ([^<>]*? [// u4e00-// u9fa5]+[^<>]*?)+(? = </a>)"; Muster muster = muster.comPile (reg); Matcher Matcher = muster.Matcher (Quelle); StringBuilder Zeichen = new StringBuilder (); while (matcher.find ()) {String result = matcher.group (); System.out.println (Ergebnis); // Machen Sie die resultierende quadratische Regularisierung und stimmen Sie mit dem chinesischen Zeichen für Zeichenfolge reg1 = "[// u4e00-// U9FA5]+" zusammen; Muster p1 = mustern.comPile (Reg1); Matcher M1 = P1.Matcher (Ergebnis); while (m1.find ()) {charakter.Append (m1.group ()); } //System.out.println (charakter.toString ()); } return charakter.toString (); } public static void main (String [] args) {String result = matchchineScharacters ("<a href = 'www.baidu.comds = id32434#comment'rewr> Special432 </a> 453543 <a guhlll ,, l> a1special123hello123? href = id = 32434#comment'ewrer> Special2 </a> <a> text2 </a> <a> text </a> "); System.out.println (Ergebnis); }}Das Ausgabeergebnis ist wie folgt:
<a guhll ,, l> a1special123 Hallo 123? <a> Text im Tag, wie geht es Ihnen?
Hier ist eine Erklärung:
String reg = "<a ((?! Kommentar).)*?> ([^<>]*? [// u4e00-// u9fa5]+[^<>]*?)+(? = </a>)";
Dieser passende Inhalt enthält Chinesisch, aber das Tag -Attribut enthält keinen Kommentar. Rückwärtssuche? <= Kann nicht verwendet werden, da die Rückwärtssuche nur inhaltlich mit fester Länge in Verbindung stehen kann. Die Attribute im Tag sind ungewiss, daher können sie nicht verwendet werden. [// u4e00-// u9fa5]+ entspricht chinesische Saiten; Während (? = </a>) verwendet die Vorwärtssuche?
Dieses Problem wurde gelöst. Wenn Sie den angegebenen Inhalt im angegebenen Tag übereinstimmen möchten, ist dies auch einfach zu verbessern. Wenn es bessere Regeln gibt, hinterlassen Sie bitte eine Nachricht, um voneinander zu lernen.
PS: Hier sind zwei sehr bequeme reguläre Ausdruckswerkzeuge für Ihre Referenz:
JavaScript regulärer Ausdruck Online -Test -Tool:
http://tools.vevb.com/regex/javaScript
Regelmäßiger Ausdruck Online -Generierungstool:
http://tools.vevb.com/regex/create_reg
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.