2

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

A) 标准杆
 乙) 1234

给定上面的字符串 A 和 B ,我想找到这些值按顺序出现的所有匹配项,而不考虑空格等,并遵循以下重要规则:

  1. 字符串 A 和 B 都不能作为另一个更大字符串的子字符串存在
  2. 给定的字符串 B 必须出现在 A 之后
  3. 给定的字符串 B 必须单独出现,而不是另一个数字的一​​部分

以下是一些潜在匹配示例:

  1. 标准杆1234
  2. 标准杆 1234
  3. 标准5678、1234
  4. 标准杆 9991234999 , 1234
  5. 标准杆!@#-= 1234
  6. 标准杆1234 -122
  7. 标准杆# 1234 -233
  8. 任何文本PAR # 1234 -233

但是,以下内容不应匹配:

  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 之前

不幸的是,我试图在 oracle 中使用REGEXP_LIKE来做到这一点,但没有 \b

我试过了

\W*标准杆\W* 1234

但这与上述潜在比赛中的#3 不匹配。所以我尝试了许多适用于某些但不是全部的变化。

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

谢谢。

4

1 回答 1

3

此解决方案用于\b检查单词边界。

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

在此处查看演示:https ://regex101.com/r/SM8Bq1/2

于 2017-01-26T16:09:08.020 回答