我需要以這種方式查找由'@'字符前綴的單詞的所有匹配項:@soemthing。正則表達式:如何匹配字符串中@something的所有匹配項
例如:
string input = "@alias1 is my first email but @alias2.com and [email protected] along with @alias4 are disabled"
我只想匹配@ alias1和@ alias4但不@ alias.com或電子郵件@別名3
感謝
我需要以這種方式查找由'@'字符前綴的單詞的所有匹配項:@soemthing。正則表達式:如何匹配字符串中@something的所有匹配項
例如:
string input = "@alias1 is my first email but @alias2.com and [email protected] along with @alias4 are disabled"
我只想匹配@ alias1和@ alias4但不@ alias.com或電子郵件@別名3
感謝
這應該工作...
(?<=^|\s)@\w+(?=\s|$)
爲了解釋,(?<=^|\s)
是一個積極的向後看,確保你是eit她在字符串的開頭,或者在匹配之前有一個空白字符。然後(?=\s|$)
是一個積極的向前看,確保匹配後面是空格或字符串的結尾。
這個答案是完美的。不幸的是,我不能將它投票爲系統的新手,我的聲望仍然低於限制。非常感謝。它像一個魅力工作! –
@ user825654 - 不客氣。你可能無法贊成,但我認爲你可以接受這個答案。只需點擊大號複選標記。 –
使用以下命令:\[email protected]\w+\b
你沒有指定編程語言,所以我假設C#。然而我不知道C#是否支持「\ b」。
編輯:
我公司將採取Justin的意見和建議,而不是\[email protected]\w+(?=["'\s]|$)
。
您可以使用下面的正則表達式:
/(?:^|\W)@[\w]+(?:\s|$)/
這將匹配'@@ alias',這可能會或可能不會被允許用於OP。 –
也會匹配'@ this_alias'。問題不清楚,但它看起來像下劃線可能不是一個允許的匹配 – Bohemian
我這樣做:(?<=(^|\s))@[a-zA-Z]+(?=(\s|$))
此正則表達式說「@後面的字母,而是由空格之前或線的開始,下一個字符是空格還是行尾「。
雖然你的例子不指定,如果你願意接受下劃線字符,例如@some_thing,那麼你就可以簡單地\w
您使用的是什麼正則表達式引擎? Perl的?蟒蛇? C#? grep的? –
您使用哪種語言?它有所作爲! – ysth
哪些字符應該在別名中有效?例如,是否允許「@ my_alias」? –