Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两组中只有一组在两个球的两边|_Python_Regex_Python 3.x - Fatal编程技术网

Python 两组中只有一组在两个球的两边|

Python 两组中只有一组在两个球的两边|,python,regex,python-3.x,Python,Regex,Python 3.x,我需要捕捉双引号或单引号中的内容,逻辑上,我这样做: >>> re.match( '"(\d+)"|\'(\d+)\'', "'123'" ).groups() (None, '123') 但是出于某种原因,返回了两个组,为什么?。因为您的正则表达式包含两个组,groups()返回“一个包含匹配的所有子组的元组,从1到模式中有多少组”()。我认为只返回匹配的组,第一个没有返回。那么我该如何实现我的目标呢?@VasylDemianovre.match(“([“\”])(\d+\

我需要捕捉双引号或单引号中的内容,逻辑上,我这样做:

>>> re.match( '"(\d+)"|\'(\d+)\'', "'123'" ).groups()
(None, '123')

但是出于某种原因,返回了两个组,为什么?。

因为您的正则表达式包含两个组,
groups()
返回“一个包含匹配的所有子组的元组,从1到模式中有多少组”()。

我认为只返回匹配的组,第一个没有返回。那么我该如何实现我的目标呢?@VasylDemianov
re.match(“([“\”])(\d+\\1“,“'123”)。第(2)组
可能会起作用。免责声明:我不懂Python。你是对的,在这种情况下它会起作用,但如果我试图匹配的字符串是
”“123”,它就不会起作用“'
@VasylDemianov我试过了,效果很好。是的,这会起作用,我可以在以后删除引号,但我确信一定有办法用正则表达式实现这一点。不,不是正则表达式,使用理解。如果您使用PyPi正则表达式模块,则可以使用分支重置。
s1 = '..."123"...'
s2 = "...'123'..."
s3 = """...'123"..."""

>>> re.findall(r'(\'\d+\'|"\d+")', s1)
['"123"']

>>> re.findall(r'(\'\d+\'|"\d+")', s2)
["'123'"]

>>> re.findall(r'(\'\d+\'|"\d+")', s3)
[]