我正在构建一个正则表达式来过滤掉以“#”或“@”开头的任何子字符串。我正尝试过滤这些推文。目前,无论字符串是否包含以“#”或“@”开头的单词,它都会匹配所有内容。
((?!\#)|(?!\@)).*
在下面的字符串中我想匹配所有粗体内容,但仅此而已:
你好,沙鲁克。你即将上映的电影的搭档是谁?@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
([\#\@].*?)
将 # 或 @ 与后面尽可能少的字符组合在一起(非贪婪)。 - 正向前瞻
(?=([\r\n ]|$))
尝试匹配回车符、换行符、空格或字符串结尾,但不将其包含在结果中。
我不知道这个解决方案有多优雅,但它对我有用。试试吧regexr.com