2016-08-05 72 views
0

我有一個字符串:正則表達式匹配多個精確匹配

MPCP-1234 this is test SAF-1234 this is testing 

我需要匹配MPCP-1234SAF-1234

我正則表達式是

SAF|MPCP-[0-9][0-9][0-9][0-9] 

但它僅僅是找到MPCP-1234SAF(不SAF-1234)。我需要匹配兩者。

​​

回答

0

您遇到的問題是另類 「經營者」(|)。您發佈的正則表達式對應於「SAF」或「MPCP-<4-digit number>」。

你想要的是(?:SAF|MPCP)-\d{4}\d匹配任何數字,並且{4}表示「恰好4最後一個令牌」(在這種情況下,\d)。 (?:)的意思是「非捕獲組」。

爲了更好地解釋您的問題,交替字符僅限於當前組 - 如果沒有明確的括號組,則整個模式將用作隱式組。

+0

謝謝塞巴斯蒂安:做的工作:) – suj

0
(SAF|MPCP)-[0-9][0-9][0-9][0-9] 

組SAF和MPCP。這應該可以解決你的問題。

+0

想這已經,已經沒有這個運氣試過 – suj

0

我覺得"(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}"

+0

,沒有運氣 – suj