2016-08-03 237 views
0

這很難解釋,我有這個正則表達式([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*) - 它捕獲Username:Whatever,它只捕獲第一捕獲組的用戶名。正則表達式 - 複雜捕獲

問題是,當我用電子郵件替換用戶名部分時,它會捕獲電子郵件@後的所有內容。我希望它甚至不會捕獲任何東西,甚至不管「無論」位。

我找不到辦法做到這一點。

實施例輸入的:

[email protected]:123abc 
username:123abc 
[email protected]:abc123 
Shiny:abc123 

輸出應爲:

username:123abc 
Shiny:abc123 

當前正則表達式的輸出:

domain.ext:123abc 
username:123abc 
gmail.com:abc123 
shiny:abc123 
+1

使用錨:'^([A-ZA-Z] [。\ w] + | [0-9] [0-9 _] * [A-ZA-Z] + [\ w。] *):(。*)$' – anubhava

+0

@anubhava ^和$不會工作,因爲我在哪裏搜索我的正則表達式。 –

+0

您可以請[編輯]給一些示例輸入和輸出?你用什麼語言從? – 4castle

回答

1

添加錨^$到開始和正則表達式的端將迫使比賽從頭到尾發生d的字符串。

^([a-zA-Z][\w.]+|[0-9][0-9_.]*[a-zA-Z]+[\w.]*):(.*)$ 

如果再激活Multiline mode,它將使每一,而不是開始和結束的錨匹配。

Regex101 Demo