我有一个正则表达式,它检测到一个名为 PO Number
的东西,它是一个PO编号后面跟着一些字符,这些字符可能是也可能不是数字,但肯定包含一个数字 . 它也可以有空格 .
您可以看到link来查找问题 .
Pattern:
((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 回答
尝试使用
(?:[^a-z])
前面的正则表达式这是一个非捕获组,因此当您解释组时,它不会出现在列表中 .