我正在使用jupyter笔记本做一些简单的Regex模式,但它在这两种情况下都不返回,我不明白为什么。
- 我想搜索3到5位数的模式
digitRegex = re.compile('r(d){3,5}')
digitRegex.search('123456789')
应返回"12345",但不返回任何值:(
- 这里有同样的问题,当试图找到3个连续的美国电话号码时,我想要可选的:区号和逗号分隔
phoneRegex = re.compile(r'((ddd-)?ddd-dddd(,)?){3}')
phoneRegex.search('My numbers are 415-555-1234,555-4242,212-555-000')
应返回3个电话号码,但也不返回:(
谢谢。。。
在您的第一个代码中,您将r
前缀放在字符串中,因此它不起作用。(此类前缀用于原始字符串。(
工作代码:
digitRegex = re.compile(r'd{3,5}')
digitRegex.search('123456789')
在第二个样本中,字符串不匹配,因为它试图获得三个电话号码,而最后一个以三位数而不是四位数结束。您需要修复您的regexp或您的电话号码。
与原始正则表达式匹配的有效数字的工作样本:
phoneRegex = re.compile(r'((ddd-)?ddd-dddd(,)?){3}') phoneRegex.search('My numbers are 415-555-1234,555-4242,212-555-0000')
使用编辑的正则表达式匹配原始数字的工作示例:
phoneRegex = re.compile(r'((ddd-)?ddd-dddd?(,)?){3,4}') phoneRegex.search('My numbers are 415-555-1234,555-4242,212-555-0000')