我在 ac 程序中有以下文本字符串和正则表达式模式:
char text[] = " identification division. ";
char pattern[] = "^(.*)(identification *division)(.*)$";
使用 regexec() 库函数,我得到以下结果:
字符串:标识划分。 模式:^(.*)(标识*除法)(.*)$ 子表达式总数:3 好的,模式已匹配... 开始:0,结束:37,匹配:识别师。 子表达式 1 开始:0,结束:8,匹配: 子表达式 2 开始:8,结束:35,匹配:标识除法 子表达式 3 开始:35,结束:37,匹配:。
我想知道,因为正则表达式引擎以贪婪的方式匹配,并且第一个捕获组(。*)匹配任意数量的字符(换行符除外),为什么它不匹配文本字符串中的字符(最多 '.') 而不是只匹配前 8 个空格?
每个捕获组是否必须匹配?
是否有关于捕获组如何匹配文本字符串的规则?
谢谢。