避免与正则表达式中的前一个单词的边界

时间:2015-10-09 10:58:00

标签: regex

我有一个正则表达式,可以检测到名为PO Number的名为PO编号的内容,后跟一些字符,这些字符可能是也可能不是数字,但肯定包含数字。它也可以有空格。

您可以看到link来查找问题。

模式:

((P\s*o\s*(\#|Number|No|\.)*\s*([:=\-\'\s\.])?\s*(\d*\s?([A-Z\-\/]*\s?\d+)+[A-Z\-]*)))

当出现类似情况时会出现问题:

Case 3. Ship on 123

此处p后跟o,以下条件适合匹配。但我需要检查'p'之前的条件是'shi'p。

显然,我需要实现一些东西,以避免p前面有一个普通的单词[A-Z] +,但如果它前面有空格或数字,则允许p。以下条件应该通过。

Case 1. YO#11111PO#2015 S53-55A

Case 2. YO#12345_PO#234 S34-34A

我尝试使用字边界\b,但这会导致案例1和2失败。还有另一种方式。

1 个答案:

答案 0 :(得分:3)

使用(?:[^a-z])

尝试使用正则表达式

这是一个非捕获组,因此当您解释组时,它不会出现在列表中。