什么是去除@提及的正则表达式(Python格式)?

时间:2018-07-04 11:18:42

标签: python regex

在Reg101上我一直对此事大惊小怪30分钟。

@提及仅仅是字母数字词,可以选择带下划线。不允许使用其他标点符号。该单词以换行符,空格或标点符号为界。 (您可能会认识到这是Twitter和许多其他社区平台使用的格式...)例如,@my_name@joe123@joesmith@fuzzymonkey_


示例输入字符串:

  • Okay okay coffee it is :-) @justcoffeezurich
  • Okay @justcoffeezurich okay coffee it is :-)
  • @justcoffeezurich Okay okay coffee it is :-)
  • Okay okay coffee it is :-) @justcoffeezurich @coffeefiend
  • Okay okay @justcoffeezurich coffee it is :-) @coffeefiend

对于所有这些输入字符串示例,输出都相同:

  • Okay okay coffee it is :-)

或另一个示例,带有电子邮件地址(不是@提及!)

  • Okay okay coffee it is, email me@me.com :-) @justcoffeezurich

输出字符串:

  • Okay okay coffee it is, email me@me.com :-)

请注意,@提及内容可能在字符串中的任何位置,并且可以不止一个。我只想杀死他们。

1 个答案:

答案 0 :(得分:0)

由于您对“ @”是否构成引人注目的解释不充分,所以我将说“ @”提及的定义是:

  • 令牌以'@'开头,这意味着它不能以空格开头,或者它是字符串的开头
  • “ @”之后是连续的单词字符
  • 此定义比StackExchange上的定义更简单-请参见Meta SE上的"How do comment @replies work?"

使用全局((^@\w*)|( @\w*))修饰符考虑此正则表达式g
(字符串形式为"((^@\\w*)|( @\\w*))"

  1. 以符号开头的 字词是在字符串\s或字符串开头的意思。
    • (^@\w+)处理在字符串开头提到内容的情况。
    • ( @\w+)处理提及在任何其他地方的情况。
  2. 后跟多个连续的单词字符。
  3. 执行首字母(^@\w*)( @\w*)的并集。

下面是Reg101中的一些示例测试及其匹配项:https://regex101.com/r/8pGDkv/1,每一行都被视为一个新字符串

希望这个定义就足够了。