التعابير المنطقية الاختياري المجموعات؟
-
06-07-2019 - |
سؤال
ويبدو لي أن الخلط بين نفسي مع التعابير المنطقية preg_match أفعله، سيكون موضع تقدير العينين حتى الطازجة والمساعدة.
وبلدي التعابير المنطقية الحالي هو كما يلي:
/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se
وأنا أتطلع لجعل إدخال رقم والقولون مثلا : (1،4) اختياري، لذلك سيكون مطابقة:
<!--menu:start--><!--menu:end-->
أو
<!--menu:start:(0,3)--><!--menu:end-->
المحلول
وأرفق مع مجموعة غير مطابقة وتعيينها لاختياري: (?:...)?
/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se
نصائح أخرى
ومثل هذا:
/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se
ولقد إضافة مجموعة غير الالتقاط، (?: )
، حول الجزء الذي تريد أن تكون اختيارية، ومن ثم suffixed مع علامة استفهام: (?:<optional content>)?
وهذا يستخدم غير التقاط مجموعة اختيارية - (?: )?
- لمطابقة جزء اختياري الخاص بك، وأيضا \d
بدلا من [0-9]
لمطابقة الأرقام:
/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se
إذا الأرقام بين قوسين يمكن أن تتكون من أكثر من رقم واحد، واستخدام هذه واحدة بدلا من ذلك:
/<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se
لا تنتمي إلى StackOverflow