python常用英文缩写_Python正则表达式:标记英语缩略语

我试图以这样一种方式来解析字符串,以便分离出所有的单词组件,甚至那些已经收缩的组件。例如,“should't”的标记化将是[“should”,“n't”]。在

nltk模块似乎无法胜任该任务,但是:"I wouldn't've done that."

标记为:['I', "wouldn't", "'ve", 'done', 'that', '.']

其中所需的“would't”标记化为:['would',“n't”,“ve”]

在研究了常见的英语缩略语之后,我试图编写一个正则表达式来完成这项工作,但是我很难弄清楚如何只匹配一次“'ve”。例如,以下标记都可以终止收缩:n't, 've, 'd, 'll, 's, 'm, 're

但是代币“'ve”也可以跟在其他缩略语之后,比如:'d've, n't've, and (conceivably) 'll've

目前,我正试图解决这个正则表达式:\b[a-zA-Z]+(?:('d|'ll|n't)('ve)?)|('s|'m|'re|'ve)\b

但是,此模式也与格式错误的匹配:"wouldn't've've"

问题似乎是第三个撇号限定为单词边界,这样最后的“'ve”标记与整个regex匹配。在

我一直想不出一种方法来区分单词边界和撇号,如果没有,我愿意接受其他策略的建议。在

另外,我很好奇是否有任何方法可以在字符类中包含单词边界特殊字符。根据Python文档,character类中的\b与退格符匹配,似乎没有办法解决这个问题。在

编辑:

输出如下:>>>pattern = re.compile(r"\b[a-zA-Z]+(?:('d|'ll|n't)('ve)?)|('s|'m|'re|'ve)\b")

>>>matches = pattern.findall("She'll wish she hadn't've done that.")

>>>print matches

[("'ll", '', ''), ("n't", "'ve", ''), ('', '', "'ve")]

我想不出第三场比赛。特别是,我刚刚意识到,如果第三个撇号与前导\b匹配,那么我不知道什么会匹配字符类[a-zA-Z]+。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 爬虫中,正则表达式是非常常用的技术,可以帮助我们从网页中提取出需要的信息。下面是一些常用正则表达式符号和方法: 1. ".":匹配任意单个字符,除了换行符。 2. "^":匹配字符串的开始位置。 3. "$":匹配字符串的结束位置。 4. "*":匹配前一个字符出现 0 次或多次。 5. "+":匹配前一个字符出现 1 次或多次。 6. "?":匹配前一个字符出现 0 次或 1 次。 7. "{m}":匹配前一个字符出现 m 次。 8. "{m,n}":匹配前一个字符出现 m 到 n 次。 9. "(...)":分组匹配,匹配括号内的表达式。 10. "[...]":匹配括号内的任意一个字符。 11. "[^...]":匹配不在括号内的任意一个字符。 12. "\d":匹配数字,等同于 [0-9]。 13. "\D":匹配非数字,等同于 [^0-9]。 14. "\s":匹配空白字符,包括空格、制表符、换行符等。 15. "\S":匹配非空白字符。 16. "\w":匹配单词字符,包括字母、数字、下划线。 17. "\W":匹配非单词字符。 在 Python 中,使用 re 模块进行正则表达式的匹配。常用的方法包括: 1. re.compile(pattern):将正则表达式编译成一个对象,提高匹配效率。 2. re.search(pattern, string):在字符串中搜索匹配正则表达式的第一个位置。 3. re.findall(pattern, string):在字符串中搜索匹配正则表达式的所有位置,并返回一个列表。 4. re.sub(pattern, repl, string):将字符串中所有匹配正则表达式的字符替换为指定的字符串。 以上是一些常用正则表达式符号和方法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值