RegexMatch (استعلام NoSQL)

ينطبق على: NoSQL

توفر هذه الدالة قدرات تعبير عادية. التعبيرات العادية هي عبارة عن رمز مختصر ومرن للعثور على أنماط النص.

ملاحظة

يستخدم Azure Cosmos DB ل NoSQL التعبيرات العادية المتوافقة مع PERL (PCRE).

بناء الجملة

RegexMatch(<string_expr_1>, <string_expr_2>, [, <string_expr_3>])  

الوسيطات

الوصف
string_expr_1 تعبير سلسلة للبحث فيه.
string_expr_2 تعبير سلسلة مع تعبير عادي محدد لاستخدامه عند البحث string_expr_1.
string_expr_3(اختياري) تعبير سلسلة اختياري مع المعدلات المحددة لاستخدامها مع التعبير العادي (string_expr_2). إذا لم يتم توفيره، فإن الإعداد الافتراضي هو تشغيل تطابق التعبير العادي بدون معدلات.

ملاحظة

يعد توفير سلسلة فارغة ل string_expr_3 مكافئا وظيفيا لحذف الوسيطة.

أنواع الإرجاع

إرجاع تعبير منطقي.

أمثلة

يوضح المثال التالي تطابقات التعبير العادي باستخدام بعض المعدلات المختلفة.

SELECT VALUE {
    noModifiers: RegexMatch("abcd", "ABC"), 
    caseInsensitive: RegexMatch("abcd", "ABC", "i"), 
    wildcardCharacter: RegexMatch("abcd", "ab.", ""),
    ignoreWhiteSpace: RegexMatch("abcd", "ab c", "x"), 
    caseInsensitiveAndIgnoreWhiteSpace: RegexMatch("abcd", "aB c", "ix"),
    containNumberBetweenZeroAndNine: RegexMatch("03a", "[0-9]"),
    containPrefix: RegexMatch("salt3824908", "salt{1}"),
    containsFiveLetterWordStartingWithS: RegexMatch("shame", "s....", "i")
}
[
  {
    "noModifiers": false,
    "caseInsensitive": true,
    "wildcardCharacter": true,
    "ignoreWhiteSpace": true,
    "caseInsensitiveAndIgnoreWhiteSpace": true,
    "containNumberBetweenZeroAndNine": true,
    "containPrefix": true,
    "containsFiveLetterWordStartingWithS": true
  }
]

يفترض المثال التالي أن لديك حاوية تحتوي على عناصر بما في ذلك name حقل.

[
  {
    "name": "Tecozow coat",
    "category": "winter-coats"
  },
  {
    "name": "Bladnick coat",
    "category": "winter-coats"
  },
  {
    "name": "Anidin heavy jacket",
    "category": "winter-coats"
  }
]

يستخدم هذا المثال تطابق تعبير عادي كعامل تصفية لإرجاع مجموعة فرعية من العناصر.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.category = "winter-coats" AND    
    RegexMatch(p.name, " coat{1}")
[
  "Tecozow coat",
  "Bladnick coat"
]

الملاحظات

  • تستفيد هذه الدالة من فهرس النطاق فقط إذا كان يمكن تقسيم التعبير العادي إلى وظائف StartsWithEndsWithContainsنظام أو أو أو StringEquals ما يعادلها.
  • إرجاع undefined إذا كان تعبير السلسلة المراد البحث فيه (string_expr_1)، أو التعبير العادي (string_expr_2)، أو المعدلات المحددة (string_expr_3) غير صالحة.
  • تدعم هذه الدالة المعدلات الأربعة التالية: | | تنسيق | الوصف | | --- | --- | --- | | أسطر | m متعددة | تعامل مع تعبير السلسلة ليتم البحث فيه كأسطر متعددة. بدون هذا الخيار، الأحرف ^ والمطابقة $ في بداية السلسلة أو نهايتها وليس كل سطر فردي. | | مطابقة أي سلسلة | s | السماح ل "." بمطابقة أي حرف، بما في ذلك حرف سطر جديد. | | تجاهل الحالة | i | تجاهل الحالة عند مطابقة النمط. | | تجاهل المسافة البيضاء | x | تجاهل كافة أحرف المسافة البيضاء. |
  • إذا كنت ترغب في استخدام حرف تعريف في تعبير عادي ولا تريد أن يكون له معنى خاص، فيجب عليك الهروب من metacharacter باستخدام \.