我有一个字符串:正则表达式匹配多个精确匹配
MPCP-1234 this is test SAF-1234 this is testing
我需要匹配MPCP-1234
和SAF-1234
。
我正则表达式是
SAF|MPCP-[0-9][0-9][0-9][0-9]
但它仅仅是找到MPCP-1234
和SAF
(不SAF-1234
)。我需要匹配两者。
我有一个字符串:正则表达式匹配多个精确匹配
MPCP-1234 this is test SAF-1234 this is testing
我需要匹配MPCP-1234
和SAF-1234
。
我正则表达式是
SAF|MPCP-[0-9][0-9][0-9][0-9]
但它仅仅是找到MPCP-1234
和SAF
(不SAF-1234
)。我需要匹配两者。
您遇到的问题是另类 “经营者”(|
)。您发布的正则表达式对应于“SAF
”或“MPCP-<4-digit number>
”。
你想要的是(?:SAF|MPCP)-\d{4}
。 \d
匹配任何数字,并且{4}
表示“恰好4最后一个令牌”(在这种情况下,\d
)。 (?:)
的意思是“非捕获组”。
为了更好地解释您的问题,交替字符仅限于当前组 - 如果没有明确的括号组,则整个模式将用作隐式组。
我觉得"(SAF|MPCP)-[0-9][0-9][0-9][0-9]"
可以解决您的问题,我测试shell grep ; echo -e "SAF-1234\nMPCP-1234" | grep -E "(SAF|MPCP)-[0-9]{4}"
,没有运气 – suj
谢谢塞巴斯蒂安:做的工作:) – suj