正则表达式在搜索以数字开头的单词时返回空列表



我在Python中遇到了插入符号和美元符号的问题。 我想找到每个以数字开头并以字母结尾的单词

这是我已经尝试过的:

import re
text = "Cell: 415kkk -555- 9999ll Work: 212-555jjj -0000"
phoneNumRegex = re.compile(r'^d+w+$')
print(phoneNumRegex.findall(text))

结果为空列表:

[]

我想要的结果:

415kkk, 9999ll, 555jjj

问题出在哪里?

正则表达式的问题:

  • ^...$意味着你只想要整个字符串的完整匹配 - 摆脱它。

  • r'w+'的意思是"任何单词字符",表示字母+数字(大小写不合理)加上下划线'_'。因此,这将匹配'5555'通过'555'r'd+'和另一个'5''w+'因此将其添加到结果中。

你需要

import re
text = "Cell: 415kkk -555- 9999ll Work: 212-555jjj -0000"
phoneNumRegex = re.compile(r'bd+[a-zA-Z]+b')
print(phoneNumRegex.findall(text))

相反:

['415kkk', '9999ll', '555jjj']

'b'是单词边界,因此您不匹配'_§$abcd1111+§$'内部的'abcd1111'

阅读:

  • 重新语法
  • regex101.com - 可以处理python语法的正则表达式测试器网站

最新更新