“她真好!” - > [ “她”, “'”, “S”, “所以”, “好”, “!”] 我想要像这样分开句子! 所以我写了代码,但它包括空格! 如何仅使用正则表达式创建代码?
words = re.findall('\W+|\w+')
- > [“她”,“'”,“s”,“”,“so”,“”,“很好”,“!”]
words = [word for word in words if not word.isspace()]
答案 0 :(得分:2)
正则表达式:[A-Za-z]+|[^A-Za-z ]
在[^A-Za-z ]
添加字符中,您不想匹配。
详细说明:
[]
匹配列表中的单个字符[^]
匹配列表中的单个字符 NOT +
匹配一次且无限次|
或Python代码:
text = "She's so nice!"
matches = re.findall(r'[A-Za-z]+|[^A-Za-z ]', text)
输出:
['She', "'", 's', 'so', 'nice', '!']
答案 1 :(得分:0)
Python的re
模块不允许您拆分零宽度断言。您可以使用python的pypi regex
package代替(确保指定使用版本1,它正确处理零宽度匹配)。
import regex
s = "She's so nice!"
x = regex.split(r"\s+|\b(?!^|$)", s, flags=regex.VERSION1)
print(x)
输出:['She', "'", 's', 'so', 'nice', '!']
\s+|\b(?!^|$)
匹配以下任一选项
\s+
匹配一个或多个空白字符\b(?!^|$)
断言位置为字边界,但不在行的开头或结尾