سؤال

أحاول إنشاء 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&&currentDate<=2012/11/08";

أو هذا

"currentDate==2012/11/07";

مع هذا regex المعدل

(<[=>]?|==|>=?|\&\&|\|\|)

واعطها على أنها "صالحة". ربما تكون بسيطة للغاية ولكن على الأقل في حالتي ، بما يكفي

تحرير: تم تعديل Regex من أجل أخذ مشغلي المقارنة (<،> ،> = ، <= ، ==) ومشغلي منطقية (&& ، ||) بطريقة مماثلة للغات تشبه C.

بناء الجملة […] يدل على فئة شخصية. يستخدم (…) للتجميع بدلاً من ذلك:

(=|>|<|>=|<|<=|<>)\s\d+

وهنا أكثر إحكاما:

(=|[<>]=?|<>)\s\d+

أو:

(=|<[>=]?|>=?)\s\d+

هذا سيفعل ما تبحث عنه.

(<[=>]?|=|>=?)\s\d+

فقط حل هذا بنفسي. يتطابق مع <،> ، <= ،> = ،! = ، = ، <> وليس => أو = <للأسف لا يزال يتطابق >>. أنا فقط أتحقق من ذلك في رمز التطبيق الخاص بي.

([!<>])?([=>])?(?!<)

أنا الآن أنا أعاني من منشور قديم ، لكنني جعلت Regex Witch حساسًا للحالة وأجد فقط ما نحتاجه ، وآمل أن يساعد شخص ما.

يعمل لصالح! = ، <= ،> = ، == ، <،> وابحث عنه فقط في بداية السلسلة.

^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top