正则表达式,用于数字字符串

时间:2017-01-26 15:33:52

标签: regex regexp-like

我一直在尝试为以下问题创建正则表达式:

 A)  PAR
 B)  1234

给定上面的字符串A和B,我想找到所有匹配,其中这些值按顺序出现,无论空格如何,等等都有以下重要规则:

  1. 字符串A和B不能作为另一个较大字符串的子字符串存在
  2. 给定的字符串B必须在A
  3. 之后出现
  4. 给定的字符串B必须单独出现,而不是另一个数字的一​​部分
  5. 以下是一些可能的匹配示例:

    1. PAR 1234
    2. PAR 1234
    3. PAR 5678, 1234
    4. PAR 9991234999, 1234
    5. PAR !@# - = 1234
    6. PAR 1234 -122
    7. PAR 1234 -233
    8. 任何文字 PAR 1234 -233
    9. 但是,以下内容不匹配:

      1. PAR T 1234 - PAR是PART的子串
      2. A PAR T 1234 - PAR是APART的子字符串
      3. PAR 1234 999 - 1234是1234999的子串
      4. PAR 999 1234 - 1234是9991234的子串
      5. PAR 999 1234 999 - 1234是9991234999的子串
      6. 1234 PAR - 1234发生在PAR之前
      7. 不幸的是,我试图在oracle中使用REGEXP_LIKE并且没有\ b

        我试过

        \ W *的 PAR \ W *的 1234

        但在上面的潜在比赛中,这与#3不匹配。所以我尝试了许多变化,这些变化对一些但不是全部都有效。

        我想知道是否有一个表达可以捕捉我想要完成的事情。任何帮助将不胜感激。

        感谢。

1 个答案:

答案 0 :(得分:2)

此解决方案使用\b来检查word boundary.

\bPAR1234\b|\bPAR\b.*\b1234\b

请参阅此处的演示:https://regex101.com/r/SM8Bq1/2