gpt4 book ai didi

c++ - 正则表达式多重匹配(QRegularExpression)

转载 作者:行者123 更新时间:2023-11-30 05:44:41 31 4
gpt4 key购买 nike

这是我的字符串:“我喜欢正则表达式,但我并不真正理解正则表达式。该死的正则表达式!”

我理解正则表达式的方式(肯定是错误的方式),如果我用“i.*regex”捕获文本。对我来说,有 5 场比赛:

1 - “我喜欢正则表达式”

2 - “我喜欢正则表达式,但我并不真正理解正则表达式”

3 - “我喜欢正则表达式,但我并不真正理解正则表达式。该死的正则表达式”

4 - “我不太懂正则表达式”

5 - “我真的不懂正则表达式。该死的正则表达式”

我不明白正则表达式文本扫描背后的算法。

这是我的 C++/Qt 代码:

QString str = "i love regex but i don't really understand regex. freaking regex!";
QRegularExpression re1("i.*regex");
qDebug()<<re1.match(str).captured(0); // OUT : "i love regex but i don't really understand regex. freaking regex"


QRegularExpression re2("i.{0,10}regex");
qDebug()<<re2.match(str).captured(0); // OUT : "i love regex"

所以在 Qt 中或一般情况下,从“我喜欢正则表达式但我真的不明白正则表达式。该死的正则表达式!”中提取第一个匹配项(“我喜欢正则表达式”)的表达式是什么??

提前致谢

最佳答案

正如评论中已经提到的,是您使用的量词决定了您将获得最长可能的匹配还是最短的可能匹配。

* 基本上意味着“任意次数的出现,但尽可能多的次数仍然会导致匹配”

*? 基本上意味着“出现任意次数,但仍会导致匹配的次数越少越好”

*+ 等量词在默认情况下是“贪婪的”,这意味着它们会尽可能多地匹配。如果您用 ? 修改它们,它们就会变得“懒惰”并表现出其他行为。

话虽这么说,一些正则表达式实现可能不支持惰性量词,并且您可能必须在特定情况下使用其他方法。

关于c++ - 正则表达式多重匹配(QRegularExpression),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29671004/

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