سؤال

لذلك لم أفعل أي regexps لفترة من الوقت ، لذلك اعتقدت أنني سأقوم بالفرشاة على ذاكرتي. أحاول تحويل سلسلة مثل a*b*c داخل a<b>b</b>c. لقد حصلت بالفعل على هذا العمل ، لكنني الآن أريد الاحتفاظ بسلسلة مثل a\*b\*c من التحول إلى a\<b>b\</b>c, ، ولكن بالأحرى في a*b*c. إليك الرمز الذي أستخدمه الآن:

     $string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);

لقد حاولت وضع هذا \\\\{0} في قبل النجمة ، وهذا لم ينجح. ولا فعل [^\\\\].

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

المحلول

جرب Lookbehind السلبي:

"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"

هذا يطابق فقط أ * إذا لم يسبقه أ \.

هذا هش ، رغم ذلك ؛ سوف يفشل أيضًا إذا كانت السلسلة escaped backslash \\*bold* text.

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