正規表示式匹配除以 hashkey 開頭的子字串之外的所有內容

正規表示式匹配除以 hashkey 開頭的子字串之外的所有內容

我正在構建一個正則表達式來過濾掉以“#”或“@”開頭的任何子字串。我正在嘗試從中過濾推文。目前,無論字串是否包含以“#”或“@”開頭的單詞,它都會匹配所有內容。

((?!\#)|(?!\@)).*

在下面的字串中,我想匹配粗體的所有內容,但僅此而已:

嗨,沙魯克。在即將上映的電影中,你的合作演員是誰?@iamsrk #lovefrommalaysia #askSRK

我想將單字之間的空格保持為粗體。我怎樣才能實現這個目標?這將在 python 中使用,僅供參考。

答案1

沒關係匹配除以“@”或“#”開頭的子字串之外的所有內容。我只是做了相反的事情,並在 python 中使用 re.sub 從字串中刪除它們:

>>> import re
>>> text = 'Hi shah rukh. Who is your co-actor in the upcoming movie? @iamsrk #lovefrommalaysia #askSRK'
>>> text = re.sub(r'([\#\@].*?)(?=([\r\n ]|$))', '', text).strip()
>>> print text
Hi shah rukh. Who is your co-actor in the upcoming movie?

簡要說明:

  1. 匹配組 #1([\#\@].*?)將 # 或 @ 與後面的盡可能少的字符組合在一起(非貪婪)。
  2. 正向先行(?=([\r\n ]|$))嘗試匹配回車符、換行符、空格或字串結尾,而不將其包含在結果中。

我不知道這個解決方案有多優雅,但它適合我的使用。試試regexr.com

相關內容