正则表达式引擎——普适规则

来源:互联网 发布:李嘉欣真人知乎 编辑:程序博客网 时间:2024/04/30 01:32

两条普适规则

规则1:优先选择最左端匹配结果

规则2:标准量词优先匹配


规则1

因由:正则表达式匹配文本时候,总是从最左边的字符开始逐个匹配,从当前位置测试整个表达式能匹配的文本,如果不能匹配,则从下一个字符开始重新尝试。

例子1:
正则表达式: cat
文本:it indicates that your cat is too fat.
匹配结果: indicates
由于从左开始匹配,左边的indicates首先满足了表达式cat
正确的正则表达式:\bcat\b

例子2:
正则表达式: fat|cat|it|your
文本: it indicates that your cat is too fat.
匹配结果:
【注意】显然,按照从左到右一次匹配的原则,it首先被匹配到,而不是正则表达式中的fat


规则2:
1、标准匹配量词:?、*、+、{min, max}
2、量词解决了满足匹配成功的下限和上限,?表示0次或1次,*表示不限次数,+表示至少一次
3、.*表示所有,既可以是任意字符,也可以表示空白
4、过度匹配优先:通过量词可以匹配尽可能多的字符串,但是表达式仍然有其他需要匹配的字符,这时候就会”强迫“把已经匹配的字符”交还“

例子:
正则表达式: .*([0-9][0-9])
文本: you are 23 years old.
解析:.*可以匹配全部字符串,但是()内的表达式要求有两个数字字符,因此.*需要从右向左逐个交还字符,直到取得2个数字
结果: you are 23

0 0
原创粉丝点击