python正则表达式:从正则表达式中包含/删除()或组会在模式匹配中产生差异吗?
我正在尝试匹配存储在某个字符串中的电话号码 str=“”Vijendra的联系电话是8861005000 Srinu的联系电话是886100501 pankaj的联系电话是+91-886100502 prasad联系电话为+92-886100503“” 对于上面的字符串,我创建了如下正则表达式:a=re.compile(r'(+\d+-)?(\d+)) 它能够正确地获取联系人号码 a、 芬德尔(str) [(“8861005000”)、(“886100501”)、(“+91-”、“886100502”)、(“+92-”、“886100503”)] 现在我只从正则表达式中删除了(),现在正则表达式看起来像是a=re.compile(r'(++\d+-)?\d++) 这一次,当我试图获取存储在字符串中的联系人号码时,我得到的字符串的值只有区号 ['','+91-','+92-'] 为什么new regex无法获取联系人号码?只取区号python正则表达式:从正则表达式中包含/删除()或组会在模式匹配中产生差异吗?,python,regex,Python,Regex,我正在尝试匹配存储在某个字符串中的电话号码 str=“”Vijendra的联系电话是8861005000 Srinu的联系电话是886100501 pankaj的联系电话是+91-886100502 prasad联系电话为+92-886100503“” 对于上面的字符串,我创建了如下正则表达式:a=re.compile(r'(+\d+-)?(\d+)) 它能够正确地获取联系人号码 a、 芬德尔(str) [(“8861005000”)、(“886100501”)、(“+91-”、“8861005
我使用的是python 2.7.12您应该看看正则表达式中的非捕获组。
如果您使用这些,您可以添加您的组,但它们不会作为结果返回。将所有捕获组转换为非捕获组
r'(?:\+\d+-)?\d+'
您好,请您进一步解释您的评论/回答好吗阅读关于re.findall
的Python文档,这里都有描述。如果模式中存在捕获组,则返回它们。