سؤال

أواجه صعوبة في الخروج مع الصحيح regex سلسلة لإزالة تسلسل متعددة ?الأحرف.أريد أن استبدال واحد أو أكثر المتعاقبة ؟ مع واحدة؟, ولكن أحرف الهروب هو الهروب مني.

مثال الإدخال:

هو هذا الشيء؟??أو ماذا ؟ ؟ ؟

الإخراج المطلوب:

هو هذا الشيء ؟ أو ماذا ؟

أنا باستخدام preg_replace() في PHP.

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

المحلول

preg_replace('{\?+}', '?', 'Is this thing on??? or what???');

هذا هو, لديك فقط للهروب من علامة استفهام ، زائد في "\?+" يعني أننا استبدال كل حالة مع واحد أو أكثر من الشخصيات ، على الرغم من أنني أشك "\?{2,}" قد يكون أفضل وأكثر كفاءة (استبدال كل حالة مع اثنين أو أكثر من علامة استفهام الشخصيات.

نصائح أخرى

preg_replace( '{\\?+}', '?', $text );

ينبغي أن تفعل ذلك.

تحتاج إلى الهروب من علامة استفهام نفسها بخط مائل ثم الهروب مائل نفسها مع آخر مائل.

إنه في مثل هذه الحالات حيث C#'s الحرفية strings هي لطيفة.

هذا يجب أن تعمل (لقد اختبرت ذلك):

preg_replace('/\?+/', '?', $subject);
preg_replace('/\?{2,}/','?',$text)

هذا ينبغي أن تفعل ذلك

preg_replace('/(\?+)/m', '?', 'what is going in here????');

علامة الاستفهام يحتاج إلى أن هرب و m هو متعدد الوضعية.

هذا موقع على شبكة الإنترنت جيدة أن تحاول ذلك في http://regex.larsolavtorvik.com/

str_replace('??', '?', 'Replace ??? in this text');

هل حاولت نمط

[?]+

مع استبدال ? ?

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