首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex多个匹配(QRegularExpression)

Regex多个匹配(QRegularExpression)
EN

Stack Overflow用户
提问于 2015-04-16 09:45:21
回答 2查看 1.2K关注 0票数 1

这是我的字符串:“我爱regex,但我不太懂reex.该死的regex!”

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

1-“我爱regex”

2-“我爱regex,但我不太懂regex”

3-“我爱regex,但我不太懂reex.MD regex”

4-“我不太懂regex”

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

我不明白regex文本扫描背后的高度。

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

代码语言:javascript
复制
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或一般情况下,从“我爱regex但我并不真正理解regex.该死的regex!”中提取第一个匹配(“我爱regex")的表达式是什么?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-16 09:54:56

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

*基本上意味着“任何数量的事件,但尽可能多的结果仍然是匹配的”。

*?基本上意味着“任何数量的事件,但尽可能少的结果仍然是匹配的”。

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

尽管如此,有些regex实现可能不支持惰性量词,在特定情况下可能需要使用其他方法。

票数 1
EN

Stack Overflow用户

发布于 2015-04-16 09:58:55

默认匹配是贪婪的。要获得最短的匹配,请使用:

代码语言:javascript
复制
QRegExp::setMinimal(true);

这将撤销贪婪行为,并返回最短的匹配。请参阅:http://doc.qt.io/qt-5/qregexp.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29671004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档