正则表达式匹配除以 hashkey 开头的子字符串之外的所有内容

正则表达式匹配除以 hashkey 开头的子字符串之外的所有内容

我正在构建一个正则表达式来过滤掉以“#”或“@”开头的任何子字符串。我正尝试过滤这些推文。目前,无论字符串是否包含以“#”或“@”开头的单词,它都会匹配所有内容。

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

在下面的字符串中我想匹配所有粗体内容,但仅此而已:

你好,沙鲁克。你即将上映的电影的搭档是谁?@iamsrk #lovefrommalaysia #askSRK

我想将单词之间的空格保持为粗体。我该如何实现?这将在 python FYI 中使用。

答案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

相关内容