Python 如何使用正则表达式将句子拆分为单词?

Python 如何使用正则表达式将句子拆分为单词?,python,regex,Python,Regex,“她太好了!”->[“她”、“她”、“她”、“那么”、“很好”、“很好”!] 我想这样把句子分开! 所以我写了代码,但它包含空格! 如何仅使用正则表达式生成代码 words = re.findall('\W+|\w+') ->[“她”、“她”、“s”、“所以”、“很好”、“很好”!] 正则表达式: 在[^A-Za-z]中添加您不想匹配的字符 详情: []匹配列表中的单个字符 [^]匹配列表中不存在的单个字符 +在一次和无限次之间匹配 |或 Python代码: text =

“她太好了!”->[“她”、“她”、“她”、“那么”、“很好”、“很好”!] 我想这样把句子分开! 所以我写了代码,但它包含空格! 如何仅使用正则表达式生成代码

        words = re.findall('\W+|\w+')
->[“她”、“她”、“s”、“所以”、“很好”、“很好”!]

正则表达式

[^A-Za-z]
中添加您不想匹配的字符

详情:

  • []
    匹配列表中的单个字符
  • [^]
    匹配列表中不存在的单个字符
  • +
    在一次和无限次之间匹配
  • |
Python代码

text = "She's so nice!"
matches = re.findall(r'[A-Za-z]+|[^A-Za-z ]', text)
输出:

['She', "'", 's', 'so', 'nice', '!']

Python的
re
模块不允许在零宽度断言上拆分。您可以改用python(确保指定使用版本1,该版本正确处理零宽度匹配)

输出:
['She','s','s','so','nice','!']

  • \s+|\b(?)
    匹配以下任一选项
    • \s+
      匹配一个或多个空白字符
    • \b(?!^ |$)
      将位置断言为单词边界,但不在行首或行尾

这不仅仅是使用正则表达式吗?你的实际计划是什么?@heemayl我想把每个单词和特殊单词分开,除了空格@WillemVanOnsem我必须删除正则表达式后面的空格!试试这个:@Amily数字呢?你如何对待数字?
['She', "'", 's', 'so', 'nice', '!']
import regex

s = "She's so nice!"
x = regex.split(r"\s+|\b(?!^|$)", s, flags=regex.VERSION1)

print(x)