【发布时间】:2017-06-12 03:17:50
【问题描述】:
我一直在尝试为以下问题创建正则表达式:
A) 标准杆 乙) 1234给定上面的字符串 A 和 B,我想找到这些值按顺序出现的所有匹配项,而不考虑空格等,并遵循以下重要规则:
- 字符串 A 和 B 都不能作为另一个更大字符串的子字符串存在
- 给定的字符串 B 必须出现在 A 之后
- 给定的字符串 B 必须单独出现,而不是另一个数字的一部分
以下是一些潜在匹配示例:
- 标准杆1234
- 标准杆 1234
- 标准杆 5678, 1234
- PAR 9991234999, 1234
- PAR !@#-= 1234
- 标准杆1234-122
- PAR#1234-233
- 任何文本PAR#1234-233
但是,以下内容不应匹配:
- PART 1234 - PAR 是 PART 的子字符串
- APART 1234 - PAR 是 APART 的子字符串
- PAR 1234999 - 1234 是 1234999 的子字符串
- PAR 9991234 - 1234 是 9991234 的子字符串
- PAR 9991234999 - 1234 是 9991234999 的子串
- 1234 PAR - 1234 出现在 PAR 之前
不幸的是,我正在尝试在 oracle 中使用 REGEXP_LIKE 来执行此操作,但没有 \b
我试过了
\W*PAR\W*1234
但这与上述潜在匹配中的#3 不匹配。所以我尝试了许多适用于某些但不是全部的变体。
我想知道是否有一个表达式可以捕捉我想要完成的事情。任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
这行得通吗? PAR.*1234
-
不完全是,因为这也会在不应该匹配的结果中返回#1-5
标签: regex regexp-like