python - 这个序列 '[[A-Z][a-z]]' 在 python 的正则表达式中意味着什么?

标签 python regex

<分区>

我试图在 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]]]]

希望这对您有所帮助!

关于python - 这个序列 '[[A-Z][a-z]]' 在 python 的正则表达式中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44002251/

相关文章:

python - 在 Django 上进行测试时遇到的问题

python - 如何让 django-debug-toolbar 只显示在我托管在 python 上的 IP 地址上?

Python向路径字符串添加特殊字符

sql - Oracle REGEXP_LIKE - 搜索字符串后面没有特定字符

python - swig python 包装指向多态类型的指针的 C++ vector

python - 非单调数据的三次样条(不是一维函数)

javascript - 使用正则表达式检查 URL 哈希以查找部分和页面

java - 使用 String.split() 提取单词对

java - GWT JSON 解析正在删除\字符

javascript - 解析单个用户输入字符串以获取高级搜索条件