gpt4 book ai didi

C++11 正则表达式匹配内匹配

转载 作者:搜寻专家 更新时间:2023-10-31 02:15:33 25 4
gpt4 key购买 nike

是否可以遍历所有匹配项,包括匹配项中的匹配项?

我试图从我的字符串 oook outside 中提取以 o 开头并以不同字符结尾的子字符串:即 oookookokou

我认为下面的代码可以做到这一点:

#include <iostream>
#include <regex>
#include <string>
using namespace std;

int main() {
string s = "oook outside";
regex e("o+[a-z]");

sregex_iterator it(s.begin(), s.end(), e);
sregex_iterator it_end;

while (it != it_end) {
cout << it->str() << endl;
it++;
}

return 0;
}

相反,它只打印 oookou

最佳答案

全部匹配,但不消耗任何东西。
引擎将在每场没有
的比赛中将位置提高1消耗一个角色。

要查看匹配项,请将其包装到捕获组中。

(?=(o+[a-z]))

展开

 (?=
( o+ [a-z] ) # (1)
)

如果引擎没有让它继续前进,那么您总是可以手动消耗 1。
要匹配所有但消耗 1 使用:

(?=(o+[a-z]))o

展开

 (?=
( o+ [a-z] ) # (1)
)
o

两者是等价的。从捕获组 1 中获取结果。

匹配

 **  Grp 0 -  ( pos 0 , len 0 )  EMPTY 
** Grp 1 - ( pos 0 , len 4 )
oook

--------------------

** Grp 0 - ( pos 1 , len 0 ) EMPTY
** Grp 1 - ( pos 1 , len 3 )
ook

--------------------

** Grp 0 - ( pos 2 , len 0 ) EMPTY
** Grp 1 - ( pos 2 , len 2 )
ok

--------------------

** Grp 0 - ( pos 5 , len 0 ) EMPTY
** Grp 1 - ( pos 5 , len 2 )
ou

关于C++11 正则表达式匹配内匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com