我有一個字符串:正則表達式匹配多個精確匹配
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