我试图在 python 中搜索正则表达式中的一些模式。
正如我们所知,如果我们使用模式 '[A-Za-z]+' ,这意味着找到包含大写字母 A 到 Z 或小写字母 a 到 z 的字符序列。
所以我的一行代码(后面是答案)是,
>>> re.findall('[A-Za-z]+', 'This is my area!')
['This', 'is', 'my', 'area']
当我尝试另一种模式时 '[[A-Z][a-z]]+' 它返回一个空列表,单行代码如下,
>>> re.findall('[[A-Z][a-z]]+', 'This is my area!')
[]
那么,当我在一个字符集中使用两个序列时,会创建什么模式?
请指导。
引擎将处理 [[A-Z][a-z]]+
作为:
-
[[A-Z]
作为允许任何大写字母 (A-Z) 或 [
的第一个字符类.把它想象成 [\[A-Z]
而不是[
被逃脱了
-
[a-z]
作为允许任何小写字母 (a-z) 的第二个字符类
-
]+
允许一个或多个 ]
所以它会匹配[b]
或 Aa]
或 Aa]]]]]]]
等等,并且不会匹配您的字符串 'This is my area!'
要进一步使用它,您可以试试这个 regex101 demo .
方括号的嵌套:
为了更好地理解正则表达式中方括号的嵌套是如何工作的,考虑另一个例子 [[[ABC]]]
Once an opening square bracket is found ([
) which indicates the start of a character class then all subsequent opening square brackets [
are treated as escaped \[
until a closing square bracket is encountered ]
which indicates end of the character class.
要对其进行测试,请查看以下示例:
[[[ABC]]]
与 [\[ABC]
相同其次是 ]{2}
.示例 A]]
[[[[ABC]]]]
与 [\[ABC]
相同其次是 ]{3}
.示例 []]]
[[[[[ABC]]]]]
与 [\[ABC]
相同其次是 ]{4}
.示例 A]]]]
希望这对您有所帮助!