本帖最后由 灰晨 于 2021-7-1 11:17 编辑
(?=a) 表示我们需要匹配某样东西的前面。 (?=a)非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。------官方
(?!a) 表示我们需要不匹配某样东西。
(?:a) 表示我们需要匹配某样东西本身。
(?<=a) 表示我们需要匹配某样东西的后面。
(?<!a) 表示我们需要不匹配某样东西,与(?!a)方向相反。
a=.*?[A-Z]
.表示除\n之外的任意字符
*表示匹配0-无穷
后边多一个?表示懒惰模式。
必须跟在*或者+后边用
匹配到第一个就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。
(?=.*?[A-Z])
匹配【A-Z】前面的字符,说明至少要有一个【A-Z】,不然匹配失败
该匹配不需要获取供以后使用。
即匹配a前面的字符,多少个无所谓,0个也行,但要要a,也就是【A-Z】,而且只是匹配但不获取
(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])
即匹配[A-Z][a-z][0-9]前面的字符,说明有[A-Z][a-z][0-9]
.{8,}
匹配 . 8次
.表示除\n之外的任意字符