تصف هذه المقالة الأحرف الصينية في العلامة مباراة منتظمة في جافا. شاركه للرجوع إليه ، على النحو التالي:
طرح صديق في المجموعة اليوم سؤالًا حول التعبيرات العادية ، والذي يحتوي على المحتوى التالي:
<a href = 'www.baidu.comds = id32434#comment'Rewr> Special432 </a> 453543 <a guhll ،، l> a1special123 هل أنت؟ </a> <a href = id = 32434#comment'ewrer> الفريق 2 </a> <a> النص 2 </a> <a> العنوان </a>
الآن تريد مطابقة الأحرف الصينية في العلامة <a> التي تحتوي محتواها على الصينية ولكن سماتها لا تحتوي على تعليق.
الحل كما يلي:
1. تطابق المباراة الأولى مع علامة <A> التي لا تتضمن التعليق ؛
2. قم بإجراء تطابق تربيعي في النتيجة المطابقة لإنتاج اللغة الصينية ؛
الرمز كما يلي:
حزمة com.mm.regex ؛ استيراد java.util.regex.matcher ؛ استيراد java.util.regex.pattern ؛/** * use تطابق الشخصيات الصينية في <a> tag of html * @projectname * author mumaoqiang * @fullname com 1.6.0* version 1.0*/فئة عامة matchchinesecharacters {/*** استنادًا إلى المدخلات ، تطابق الأحرف الصينية في tag <a> التي تحتوي على صينية ولكنها لا تحتوي "<a ((؟! تعليق).)*؟> ([^<>]*؟ [// u4e00-// u9fa5]+[^<>]*؟)+(؟ = </a>) نمط نمط = pattern.compile (reg) ؛ Matcher Matcher = pattern.matcher (Source) ؛ stringBuilder حرف = جديد StringBuilder () ؛ بينما (matcher.find ()) {string result = matcher.group () ؛ System.out.println (نتيجة) ؛ // اجعل النتيجة تنظيمًا تربيعيًا وتطابق سلسلة الأحرف الصينية Reg1 = "[// u4e00-// u9fa5]+" ؛ نمط p1 = pattern.compile (Reg1) ؛ Matcher M1 = P1.Matcher (النتيجة) ؛ بينما (m1.find ()) {character.append (m1.group ()) ؛ } //system.out.println (character.toString ()) ؛ } return character.toString () ؛ } main static void main (string [] args) {string result = matchchinesecharacters ("<a href = 'www.baidu.comds = id32434#comment'Rewr> Special432 </a> href = id = 32434#comment'ewrer> Special2 </a> <a> text2 </a> <a> النص </a> ") ؛ System.out.println (نتيجة) ؛ }}نتيجة الإخراج على النحو التالي:
<a guhll ،، l> a1special123 hello 123؟ <a> نص في العلامة ، كيف حالك؟
هذا تفسير:
string reg = "<a ((؟! comment).)*؟> ([^<>]*؟ [// u4e00-// u9fa5]+[^<>]*؟)+(؟ = </a>)" ؛
يحتوي هذا المحتوى المطابق على الصينية ولكن سمة العلامة لا تحتوي على تعليق. البحث المتخلف؟ <= لا يمكن استخدامه ، لأن البحث المتخلف يمكن أن يكون فقط محتوى بطول ثابت. السمات في العلامة غير مؤكدة ، لذلك لا يمكن استخدامها ؛ [// u4e00-// u9fa5]+ يطابق السلاسل الصينية ؛ بينما (؟ = </a>) يستخدم البحث الأمامي؟ = ، ولن يتم تضمين العلامة النهائية في النتيجة.
تم حل هذه المشكلة. إذا كنت ترغب في مطابقة المحتوى المحدد في العلامة المحددة ، فمن السهل أيضًا تحسينه. إذا كانت هناك قواعد أفضل ، فيرجى ترك رسالة للتعلم من بعضها البعض.
ملاحظة: فيما يلي أداة تعبير منتظمة مريحة للغاية للرجوع إليها:
أداة اختبار javaScript التعبير العادي عبر الإنترنت:
http://tools.vevb.com/regex/javaScript
أداة توليد التعبير العادية عبر الإنترنت:
http://tools.vevb.com/regex/create_reg
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.