سؤال

لدي مفصولة بفواصل قائمة من التعبيرات العادية:

.{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]

لقد فعلت الانقسام على فاصلة.الآن أنا أحاول أن مباراة هذا regex ضد إنشاء كلمة مرور.المشكلة هي أن Pattern.compile لا يحب المعقوفتين ليس هذا هو هرب.يمكن لبعض من فضلك أعطني وظيفة بسيطة تأخذ سلسلة مثل ذلك: [0-9] وإرجاع هرب سلسلة \[0-9\].

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

المحلول

يمكنك استخدام Pattern.quote(String).

من مستندات:

public static String quote​(String s)

يعود الحرفي نمط String المحدد String.

هذه الطريقة تنتج سلسلة التي يمكن استخدامها لخلق نمط من شأنها أن تتطابق مع سلسلة s كما لو كانت حرفية نمط.

Metacharacters أو تسلسلات الهروب في إدخال تسلسل سيتم إعطاء أي معنى خاص.

نصائح أخرى

لسبب ما، فإن الإجابة المذكورة أعلاه لم تنجح من أجلي. لأولئك مثلي الذي يأتي بعد ذلك، هنا ما وجدته.

كنت أتوقع عكتي علب واحد للهروب من القوس، ومع ذلك، يجب عليك استخدام اثنين إذا كان لديك النمط المخزن في سلسلة. الفاكهة الخلفية الأولى يهرب من الثانية في السلسلة، بحيث يرى ريجيكس \]. وبعد نظرا لأن Regex يرى فقط بخلفية احتياطية واحدة، فإنه يستخدمه للهروب من قوس المربع.

\\] 

في Regex، من شأنها أن تتطابق مع قوس مربع إغلاق واحد.

إذا كنت تحاول مطابقة جديد، على سبيل المثال، فهل ستستخدم سوى خلش واحد. أنت تستخدم نمط الهروب السلسلة لإدراج حرف جديد في السلسلة. Regex لا يرى \n - يرى شخصية نيولين، ويطابق ذلك. تحتاج إلى اثنين من الخلفية لأنها ليست تسلسل هروب سلسلة، إنه تسلسل الهروب ريجيكس.

يمكنك استخدام الأحرف q و e ... أي شيء بين q و e يتم تشغيل تلقائيا.

\Q[0-9]\E

Pattern.compile() يحب الأقواس المربعة بخير. إذا كنت تأخذ السلسلة

".{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]"

وتقسيمها في الفواصل، وينتهي بك الأمر مع خمسة Regyxes صالحة تماما: أول واحد يطابق ثمانية أحرف فاصلة غير خطية، والمطابقة الثانية من رقم ASCII، وهلم جرا. إلا إذا كنت تريد حقا مطابقة سلاسل مثل ".{8}" و "[0-9]", ، لا أرى لماذا تحتاج إلى الهروب من أي شيء.

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