RegEx将单词和符号中的句子拆分为例外

时间:2018-06-10 18:29:16

标签: python regex

我已经制作了这段代码:

import re

sentence = "Hello, StackOverflow!" # Sample input
words = re.findall(r"\w+|[^\w\s]", sentence, re.UNICODE)
print(words)    

哪个效果出奇的好。这是示例输出['Hello', ',', 'StackOverflow', '!']

关于这个RegEx的重要部分是即使有空格也能正确地从符号中分割单词(例如'Hello World!'和'Hello World!'以相同的方式分割)。

现在,我需要将这些符号的组合列入黑名单,特别是f/xxxx(xxxx是占位符,其中可能有任何内容)。

示例:

  

“这是一个包含:f / thiscanbeanything”的句子应该被分成['This','is','a','sentence','containing',':','f/thiscanbeanything']

我怎样才能做到这一点? (字顺序非常重要!)

2 个答案:

答案 0 :(得分:0)

怎么样:

f\/\w+|\w+|[^\w\s]

演示:https://regex101.com/r/Va3Llp/1

答案 1 :(得分:0)

将正则表达式更改为r"f/\w+|\w+|[^\w\s]"(作为第一种选择 我添加了f/\w+)。在Python中,您甚至不需要转义/字符 (正如您在其他主机语言中所必须的那样)。

重要的是添加的片段是第一种选择。 否则例如\w+替代方案将赢得"赢得"仅匹配f

注意:我假设您的thiscanbeanything是一个单词序列 字符。如果不是这种情况(例如一系列非空间字符), 相应地改变这个替代方案。