簡體   English   中英

正則表達式:搜索以 @ 或 @ 開頭的單詞

[英]Regex: searching for words that starts with @ or @

我想在 python 中創建一個正則表達式來查找以 @ 或 @ 開頭的單詞。

我創建了以下正則表達式,但輸出在每個字符串中包含一個額外的空格,如您所見

regex = r'\s@\/?[\w\.\-]{2,}'
exp = 'george want@to play @.hdgska football @dddada'
re.findall(regex, exp)
Output: [' @.hdgska', ' @dddada']

但是,我想要的輸出如下

Output: ['@.hdgska', '@dddada']

如果您能幫助我,我將不勝感激!

編輯: @第四只鳥,非常感謝您的幫助。 還有一件事我不知道如何處理。 如果我們有這個字符串

s = "george want@to play @.hdgska football @dddada@snhfbjskjs"

輸出是

['@.hdgska', '@dddada']

但是,我想要的輸出應該是這個

'@.hdgska'

在您的模式中,您實際上匹配的是前導\s並且在 @ 之后可以有一個可選的/\/? 但它應該可選地以點開頭。

例如,您可以匹配可選的點,然后匹配字符類中允許的字符的 2 倍或更多倍。

在 @ 符號的左側,斷言非單詞邊界或斷言空白邊界。

請注意,您不必轉義字符類中的點和連字符。

\B@\.?[\w.-]{2,}

正則表達式演示

另外的選擇:

(?<!\S)@\.?[\w.-]{2,}

正則表達式演示

例子

import re
 
pattern = r"(?<!\S)@\.?\w+[\w.-]{2,}"
s = "george want@to play @.hdgska football @dddada"
print(re.findall(pattern, s))

輸出

['@.hdgska', '@dddada']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM