我想從中抽取gmail.com,我只想要那些不以@開頭的字符串匹配。前綴排除的正則表達式
例如:[email protected](不匹配這個); www.gmail.com(與此匹配)
我嘗試了以下操作:([email protected])gmail\.com
但這沒有奏效。這與以上示例中突出顯示的兩種情況相匹配。有什麼建議麼?
我想從中抽取gmail.com,我只想要那些不以@開頭的字符串匹配。前綴排除的正則表達式
例如:[email protected](不匹配這個); www.gmail.com(與此匹配)
我嘗試了以下操作:([email protected])gmail\.com
但這沒有奏效。這與以上示例中突出顯示的兩種情況相匹配。有什麼建議麼?
你要負回顧後,如果您正則表達式支持它,像(?<[email protected])gmail\.com
並添加\b
,以免發生匹配foogmail.comz
,如:(?<[email protected])\bgmail\.com\b
[^@\s]*(?<[email protected])\bgmail\.com\b
假設您想在更長的文本體中查找字符串,而不驗證整個字符串。
說明:
[^@\s]* # match any number of [email protected], non-space characters
(?<[email protected]) # assert that the previous character isn't an @
\b # match a word boundary (so we don't match hogmail.com)
gmail\.com # match gmail.com
\b # match a word boundary
在一個乍看之下,(?<[email protected])
向後斷言似乎是不必要的,但它不是 - 否則的[email protected]
的gmail.com
部分將匹配。
說明!是。 – thekingoftruth 2014-01-22 11:24:57
我的投票也解釋它。 – MrMarlow 2016-04-28 10:00:06
使用正則表達式使用negative lookbehind:
/^.*?(?<[email protected])gmail\.com$/
你的意思是前綴? – Qtax 2011-06-08 16:44:16
嗯..是的,這就是我的意思:)前綴 – Tom 2011-06-08 17:29:50