Python 比较两个正则表达式[ab]*和([ab])\1
我想知道的是Python 比较两个正则表达式[ab]*和([ab])\1,python,regex,Python,Regex,我想知道的是 为什么[ab]*不重复匹配的部分,而是重复[ab]。换句话说,为什么它与a*或b*不一样 为什么([ab])\1重复匹配的部分,但不重复[ab]。换句话说,为什么它只能匹配aa和bb,而不能匹配ab和ba 是因为()的优先级低于[],而*的优先级高于[]?我想知道,将这些视为操作员是否不合适。谢谢。他们俩完全不同 当你说[ab]*时,它意味着a或b的次数为零或更多。因此,它将匹配“,”a“,”b“,以及a和b的任意组合 但是([ab])\1意味着将匹配a或b,然后捕获它\1称为
- 为什么
不重复匹配的部分,而是重复[ab]*
。换句话说,为什么它与[ab]
或a*
不一样b*
- 为什么
重复匹配的部分,但不重复([ab])\1
。换句话说,为什么它只能匹配[ab]
和aa
,而不能匹配bb
和ab
ba
是因为
()
的优先级低于[]
,而*
的优先级高于[]
?我想知道,将这些视为操作员是否不合适。谢谢。他们俩完全不同
当你说[ab]*
时,它意味着a
或b
的次数为零或更多。因此,它将匹配“,”a“,”b“,以及a
和b
的任意组合
但是
([ab])\1
意味着将匹配a
或b
,然后捕获它<代码>\1称为反向引用。它指的是正则表达式中已捕获的组。在我们的例子中,([ab])
。因此,如果捕获了a
,那么它将只再次匹配a
。如果它是b
,则它将仅再次匹配b
。它只能匹配aa
和bb
它们完全不同
[ab]*
当你说[ab]*
时,它意味着a
或b
的次数为零或更多。因此,它将匹配“,”a“,”b“,以及a
和b
的任意组合
但是
([ab])\1
意味着将匹配a
或b
,然后捕获它<代码>\1称为反向引用。它指的是正则表达式中已捕获的组。在我们的例子中,([ab])
。因此,如果捕获了a
,那么它将只再次匹配a
。如果它是b
,则它将仅再次匹配b
。它只能匹配aa
和bb
它们完全不同
[ab]*
当你说[ab]*
时,它意味着a
或b
的次数为零或更多。因此,它将匹配“,”a“,”b“,以及a
和b
的任意组合
但是
([ab])\1
意味着将匹配a
或b
,然后捕获它<代码>\1称为反向引用。它指的是正则表达式中已捕获的组。在我们的例子中,([ab])
。因此,如果捕获了a
,那么它将只再次匹配a
。如果它是b
,则它将仅再次匹配b
。它只能匹配aa
和bb
它们完全不同
[ab]*
当你说[ab]*
时,它意味着a
或b
的次数为零或更多。因此,它将匹配“,”a“,”b“,以及a
和b
的任意组合
但是([ab])\1
意味着将匹配a
或b
,然后捕获它<代码>\1称为反向引用。它指的是正则表达式中已捕获的组。在我们的例子中,([ab])
。因此,如果捕获了a
,那么它将只再次匹配a
。如果它是b
,则它将仅再次匹配b
。它只能匹配aa
和bb
[ab]*
这也将不匹配任何内容、a
、b
、aaa
、bbb
,以及字符串的任何长度。匹配不受长度限制,并且由于没有捕获组,因此它声明匹配由所有a
和b
字符组成的任意长度的字符串
([ab])\1
在这种情况下,它强制匹配的字符串为两个字符,因为没有重复。首先,它必须匹配paren中的内容(用于捕获组1),然后它必须匹配在组1中捕获的内容,这会隐式地强制匹配为两个字符长,且两个字符相同
这也将不匹配任何内容、a
、b
、aaa
、bbb
,以及字符串的任何长度。匹配不受长度限制,并且由于没有捕获组,因此它声明匹配由所有a
和b
字符组成的任意长度的字符串
([ab])\1
在这种情况下,它强制匹配的字符串为两个字符,因为没有重复。首先,它必须匹配paren中的内容(用于捕获组1),然后它必须匹配在组1中捕获的内容,这会隐式地强制匹配为两个字符长,且两个字符相同
这也将不匹配任何内容、a
、b
、aaa
、bbb
,以及字符串的任何长度。匹配不受长度限制,并且由于没有捕获组,因此它声明匹配由所有a
和b
字符组成的任意长度的字符串
([ab])\1
在这种情况下,它强制匹配的字符串为两个字符,因为没有重复。首先,它必须匹配paren中的内容(用于捕获组1),然后它必须匹配在组1中捕获的内容,这会隐式地强制匹配为两个字符长,且两个字符相同
这也将不匹配任何内容、a
、b
、aaa
、bbb
,以及字符串的任何长度。匹配不受长度限制,并且由于没有捕获组,因此它声明匹配由所有a
和b
字符组成的任意长度的字符串
([ab])\1
在这种情况下,它强制匹配的字符串为两个字符,因为没有重复。首先,它必须匹配paren中的内容(用于捕获第一组),然后它必须匹配matc