سؤال

لدي سلسلة مثل هذا:

This <span class="highlight">is</span> a very "nice" day!

كيف ينبغي أن يبدو نمط RegEx الخاص بي في VB، للعثور على علامات الاقتباس داخل العلامة؟أريد استبداله بشيء..

This <span class=^highlight^>is</span> a very "nice" day!

شيء مثل <(")[^>]+> لا يعمل :(

شكرًا

هل كانت مفيدة؟

المحلول

وهذا يعتمد على نكهة التعابير المنطقية، ولكن هذا يعمل لمعظم منهم:

"(?=[^<]*>)

تعديل: بالنسبة لأي شخص من الغريب كيف يعمل هذا. وهذا يترجم إلى الإنجليزية "العثور على الاقتباس الذي تبعتها> قبل اليوم التالي <".

نصائح أخرى

تعتبر Regexes سيئة بشكل أساسي في تحليل HTML (انظر هل يمكنك تقديم بعض الأمثلة عن سبب صعوبة تحليل XML وHTML باستخدام التعبير العادي؟ لماذا).ما تحتاجه هو محلل HTML.يرى هل يمكنك تقديم مثال لتحليل HTML باستخدام المحلل اللغوي المفضل لديك؟ للحصول على أمثلة باستخدام مجموعة متنوعة من المحللين.

إذا كنت تستخدم VB.net فيجب أن تكون قادرًا على استخدامه HTMLAgilityPack.

وجرب هذا: <span class="([^"]+?)?">

وهذا يجب أن احصل على قيمة السمة الأولى في علامة:

<[^">]+"(?<value>[^"]*)"[^>]*>

إذا لديك نية لاستبدال ALL علامات الاقتباس ضمن العلامات، يمكنك استخدام التعبير العادي التالي:

و(<[^>"]*)(")([^>]*>)

وهذا سوف عزل فرعية قبل وبعد علامة الاقتباس. لاحظ أن هذا لا يحاول تطابق علامات الاقتباس الافتتاح والختام. ببساطة مباريات علامة اقتباس ضمن علامة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top