English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ما هو تعبير النمط؟
التعبيرات النمطية، المعروفة أيضًا باسم طريقة التعبير الرسمية أو الطريقة التقليدية (بالإنجليزية: Regular Expression، تُكتب عادةً كregex أو regexp أو RE)، مفهوم في علم الكمبيوتر. تستخدم التعبيرات النمطية نصًا واحدًا للوصف والتوافق مع سلسلة من النصوص تتوافق مع قواعد نحوية معينة. غالبًا ما يتم استخدام التعبيرات النمطية في محررات النصوص المختلفة للبحث عن أو استبدال النصوص تتوافق مع نمط معين.
swift 至今并没有在语言层面上支持正则表达式,可能在开发app时正则表达式使用的场景并不多。
封装
在 Cocoa 中我们可以使用 NSRegularExpression 来做正则匹配,所以我们在 NSRegularExpression 的基础上封装一个 RegularExpHelper 配匹一个字符串是否符合某个正则表达式。
struct RegularExpHelper { let RegularExp: NSRegularExpression init(_ pattern: String) throws { try RegularExp = NSRegularExpression(pattern: pattern, options: .caseInsensitive) } func match(inpuut: String) -> Bool { let matches = RegularExp.matches(in: inpuut, options: [], range: NSMakeRange(0, inpuut.count)) return matches.count > 0 } }
自定义 =~
有了封装好的 RegularExpHelper,我们就可以方便的自定义运算符了。
infix operator =~ : ATPrecedence precedencegroup ATPrecedence { associativity: none higherThan: AdditionPrecedence lowerThan: MultiplicationPrecedence } func =~ (input: String, RegularExp: String) -> Bool { do { return try RegularExpHelper(RegularExp).match(inpuut: input) catch _ { return false } }
definition of operators
associativity
which is the calculation order when multiple operators of the same type appear in sequence
priority
ثم يمكننا استخدامها
if "[email protected]" =~ "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$" { print("مطابق لمسار البريد الإلكتروني") } print("غير مطابق لمسار البريد الإلكتروني") }
الاحتياط
الخلاصة
هذا هو نهاية محتوى هذا المقال، نأمل أن يكون محتوى هذا المقال ذا قيمة مرجعية لدراستكم أو عملكم، يمكنكم ترك تعليقات إذا كان لديكم أي أسئلة، شكرًا لدعمكم لتعليمات النداء.
البيان: محتويات هذا المقال تم جمعها من الإنترنت، وتعود حقوق الملكية للمالك الأصلي، تم إضافة المحتوى من قبل مستخدمي الإنترنت بطرق متحفزة وبدون تدخل بشري، ويستخدم هذا الموقع فقط كوسيط وليس له حقوق الملكية، ولا يتحمل أي مسؤولية قانونية مرتبطة بذلك. إذا رأيت محتوى يشتبه في انتهاك حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال #بـ @) للإبلاغ، وقدم الدليل على الدليل، وسيتم حذف المحتوى المزعوم فور التحقق منه.