环视只进行子表达式的匹配匹配内容不计入最终的匹配结果。
环视按照方向划分有顺序和逆序两种按照是否匹配有肯定和否定两种,组合起来就有四种环视环视相當于对所在位置加了一个附加条件。
例如:“(?<=abc )\d+”在匹配“abc 123”时匹配结果为“123”。“\d+”表示匹配一个以上的数字而“(?<=abc )”相当于一个附加條件,表示所在位置左侧必须为“abc ”它所匹配的内容并不计入匹配结果。同样的正则在匹配“acc 123”时匹配失败,因为这里任意一串数字孓串的左侧都不是“abc ”
这里说一下个人遇到的问题:需匹配以指定规则开头是7结尾29的一串数字、不以指定规则结尾的字符串。如匹配以数芓开头是7结尾29的一串数字不以’abc’结尾的字符串:正则为^[0-9]+.*(?<!abc)$
- (?=.*\\d) 保证字符串包含一个数字
- (?=.*[A-Z]) 保证字符串包含一个大写字母