سؤال
أحاول إنشاء regex يطابق مقارنات مثل هذا:
= 445
> 5
>= 22
< 3
<= 42
<> 10
اعتقدت أن هذا سينجح ، لكنه لا:
[=|>|<|>=|<|<=|<>]\s\d+
من المهم جدًا أن يكون ">" أو "<'precede' = '. لن يكون هؤلاء المشغلون صالحين:
=<
=>
>>
<<
==
أنا أستخدم هذا لإنشاء بعض SQL الديناميكي بحيث يحتاج مشغلو المقارنة إلى SQL.
أي اقتراحات؟
لا يوجد حل صحيح
نصائح أخرى
(=|>|<|>=|<|<=|<>)\s\d+
أو شيء مثل: ((لا يفعل حقًا ما تريد ، فهو يطابق جميع مجموعات 2 Charcter من = <> ، ولكن للوضوح)
[=><]{1,2}\s\d+
-> عند استخدام أقواس [] ، يعني ، أن أحد الحرف الداخلي يجب أن يحدث (متعددة | المحددة قد تؤدي إلى سلوك غير محدد ، أو سلوك لست على علم به)
-> ربما أردت استخدام الأقواس البسيطة () ، حيث | لديه معنى "أو".
أود أن أقول أن regex التي قدمتها EMFI جيدة بما فيه الكفاية. مع بعض التعديلات ، يمكن أن تأخذ تعبيرات مثل هذا
"currentDate>=2012/11/07&¤tDate<=2012/11/08";
أو هذا
"currentDate==2012/11/07";
مع هذا regex المعدل
(<[=>]?|==|>=?|\&\&|\|\|)
واعطها على أنها "صالحة". ربما تكون بسيطة للغاية ولكن على الأقل في حالتي ، بما يكفي
تحرير: تم تعديل Regex من أجل أخذ مشغلي المقارنة (<،> ،> = ، <= ، ==) ومشغلي منطقية (&& ، ||) بطريقة مماثلة للغات تشبه C.
بناء الجملة […]
يدل على فئة شخصية. يستخدم (…)
للتجميع بدلاً من ذلك:
(=|>|<|>=|<|<=|<>)\s\d+
وهنا أكثر إحكاما:
(=|[<>]=?|<>)\s\d+
أو:
(=|<[>=]?|>=?)\s\d+
هذا سيفعل ما تبحث عنه.
(<[=>]?|=|>=?)\s\d+
فقط حل هذا بنفسي. يتطابق مع <،> ، <= ،> = ،! = ، = ، <> وليس => أو = <للأسف لا يزال يتطابق >>. أنا فقط أتحقق من ذلك في رمز التطبيق الخاص بي.
([!<>])?([=>])?(?!<)
أنا الآن أنا أعاني من منشور قديم ، لكنني جعلت Regex Witch حساسًا للحالة وأجد فقط ما نحتاجه ، وآمل أن يساعد شخص ما.
يعمل لصالح! = ، <= ،> = ، == ، <،> وابحث عنه فقط في بداية السلسلة.
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?