如何在“否”,“否”和“从不”之后的否定单词中添加标签

如何在“否”,“否”和“从不”之后的否定单词中添加标签,第1张

如何在“否”,“否”和“从不”之后的否定单词中添加标签

为了弥补Python的

re
正则表达式引擎缺乏某些Perl功能的不足,可以在
re.sub
函数中使用lambda表达式来创建动态替换:

import restring = "It was never going to work, he thought. He did not play so well, so he had to practice some more. Not foobar !"transformed = re.sub(r'b(?:not|never|no)b[ws]+[^ws]',        lambda match: re.sub(r'(s+)(w+)', r'1NEG_2', match.group(0)),        string,       flags=re.IGNORECASE)

将打印(此处为演示)

It was never NEG_going NEG_to NEG_work, he thought. He did not NEG_play NEG_so NEG_well, so he had to practice some more. Not NEG_foobar !

说明

  • 第一步是选择您感兴趣的字符串部分。
    b(?:not|never|no)b[ws]+[^ws]

您的否定关键字(

b
是一个单词边界,
(?:...)
一个非捕获性组),后跟字母和空格
w
is
[0-9a-zA-Z_]
s
是所有空白),直到既不是字母数字也不是空格(用作标点符号)为止。

请注意,此处标点符号是强制性的,但您也可以安全地删除它

[^ws]
以匹配字符串的结尾。

  • 现在,您正在处理
    never going to work,
    某种字符串。只需选择前面带有空格的单词
    (s+)(w+)

并用您想要的替换它们

    1NEG_2


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5664337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存