我正在尝试使用 re.split() 和正则表达式将目标句子拆分为复合片段以供稍后使用
(@?\w+)(\W+)
理想情况下,这将在生成的列表中拆分单词和非单词字符,将两者保留为单独的列表项,但可以在单词之前的“@”符号除外。如果单词前有 @ 符号,我想将其作为一个有凝聚力的项目保留在拆分中。我的例子如下。
我的测试语句如下:
这是对专有名词@Ryan 的测试
所以代码行是:
re.split(r'(@?\w+)(\W+)', "这是对专有名词@Ryan的测试")
我要生成的列表将包含“@Ryan”作为单个项目,但相反,它看起来像这样
['','this','','','is','','','a','','','test','','','of','' , '', '适当的', ' ', '', '名词', '@', 'Ryan']
由于第一个容器有 @ 符号,我原以为会先评估它,但显然不是这样。我曾尝试使用前瞻或从 \W+ 容器中删除 @ 无济于事。
