البحث عن تعبير عادي يتضمن الحروف الأبجدية الرقمية + "&" و";"
سؤال
ها هي المشكلة:
split=re.compile('\\W*')
يعمل هذا التعبير العادي بشكل جيد عند التعامل مع الكلمات العادية، ولكن هناك مناسبات أحتاج فيها إلى أن يتضمن التعبير كلمات مثل käyttäj&aml;auml;
.
ما الذي يجب علي إضافته إلى regex لتضمين ملف &
و ;
الشخصيات؟
المحلول
ربما تريد أن تأخذ المشكلة بشكل عكسي، أي.العثور على كل الحرف بدون مسافات:
[^ \t\n]*
أو تريد إضافة الأحرف الإضافية:
[a-zA-Z0-9&;]*
في حالة رغبتك في مطابقة كيانات HTML، يجب عليك تجربة شيء مثل:
(\w+|&\w+;)*
نصائح أخرى
أود أن أعامل الكيانات كوحدة (نظرًا لأنها يمكن أن تحتوي أيضًا على رموز أحرف رقمية)، مما يؤدي إلى التعبير العادي التالي:
(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+
هذا يتطابق
- إما حرف كلمة (بما في ذلك "
_
")، أو - كيان HTML يتكون من
- الشخصية "
&
”,- الشخصية "
#
”,- الشخصية "
x
" متبوعًا برقم سداسي عشري واحد على الأقل، أو - رقم عشري واحد على الأقل، أو
- الشخصية "
- حرف واحد على الأقل (= الكيان المسمى)،
- الشخصية "
- فاصلة منقوطة
- الشخصية "
- مرة على الاقل.
/يحرر:شكرًا لـ ΤΖΩΤΖΙΟΥ على الإشارة إلى الخطأ.
يجب عليك إنشاء فئة أحرف تتضمن الأحرف الإضافية.على سبيل المثال:
split=re.compile('[\w&;]+')
هذا ينبغي أن تفعل خدعة.لمعلوماتك
\w
(الحرف الصغير "w") يطابق أحرف الكلمات (الأبجدية الرقمية)\W
(الحرف الكبير W) عبارة عن فئة أحرف ملغاة (بمعنى أنها تطابق أي حرف غير أبجدي رقمي)*
يطابق 0 مرات أو أكثر و+
يطابق مرة واحدة أو أكثر، لذلك*
سوف يتطابق مع أي شيء (حتى لو لم تكن هناك أحرف هناك).
يبدو أن هذه هي الحيلة:
Split=re.compile('(\\W+&\\W+;)*')
شكرا على الاقتراحات.لقد عمل معظمها بشكل جيد مع Reggy، لكنني لا أفهم تمامًا سبب فشلها في إعادة التحويل البرمجي.