2017-05-17 349 views
2

我有以下正則表達式: (?i)p\[email protected](-)?\w+(-\w+)?(\.\w+)?\.at這是匹配數據,如正則表達式擺脫捕獲組

[email protected] 
[email protected] 

我怎麼能改寫這個正則表達式來使用非captchuring羣體?

(?i)p應寫爲?ip我認爲但https://regex101.com我只在嘗試將(?:?i)p\[email protected](?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at用於非捕獲組時遇到錯誤。

最後,python3應該評估正則表達式。

+1

你的[** expression works **](https://regex101.com/r/wHgZNz/1) - 只需將修飾符放在表達式之外或使用[**'(?i)p \ w + @ t(?: - )?\ w +(?: - \ w +)?(?:\。\ w +)?\。at'**](https://regex101.com/r/wHgZNz/2) – Jan

回答

5

第一個「組」(?i)不是捕獲組,它是一個標記集,打開表達式的不區分大小寫。非捕獲版本應爲:

(?i)p\[email protected]?\w+(?:-\w+)?(?:\.\w+)?\.at 

其中正確匹配。

+0

This當您將原始表達式粘貼到regex101時,您提到的站點:「(?i)將該模式的其餘部分與下列有效標誌進行匹配:gi i修飾符:不敏感。不區分大小寫匹配(忽略[a-zA-Z]的情況)「 – Adrian

+1

對於魚+1 ;-) – Jan

0

您可以使用

(?i)p\[email protected](?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at 

a demo on regex101.com
正如其他人所指出的那樣,(?i)是行內修飾符,如(?s)(單行)或(?m)(多行)。

+0

沒有解釋爲什麼這個工作和原來不是? – Adrian

+0

當然。教一個人釣魚和所有的:) – Adrian