几个原则:
分组的编号从1开始
遇到()加1
遇到断言跳过,如(?:exp)这种格式的,如果要算的话就,((?:exp))
PS:(pattern)这样就算一个分组
例子:
"<a\\s+([^>h]|h(?!ref\\s))*(?<=[\\s+]?href[\\s+]?=[\\s+]?('|\")?)([^\"|'>]+?(?=\"|'))(.+?)?((?<=>)(.+?)?(?=</a>))";
这个表达式有11对括号
5个红色的是断言
所以它有6个分组
编号从左到右,从外到内依次递增