QT 正则表达式 你懂多少?

ailinty 2010-10-14 11:09:11

QRegExp regExp;
regExp.setPatternSyntax(QRegExp::RegExp);
regExp.setCaseSensitivity(Qt::CaseSensitive);
regExp.setPattern(QString("([^a-z\\s]{2,8})(%1)(\\s)").arg("yuan"));
int ret = regExp.indexIn(QString(data.data()),0,QRegExp::CaretAtZero);
if(ret > -1)
{
//找到匹配的内容
regExp.cap(1).toAscii().data();
}

我发帖不是因为发帖而发帖,是因为想跟大家分享一些我学的的东西。上面这个是正则表达式的一个应用。大家看看。那位高人能详细解释下regExp.setPattern(QString("([^a-z\\s]{2,8})(%1)(\\s)").arg("yuan")); 的含义?谢谢。
知识是学不完的,最主要的是能了解一二就好。在了解的基础上,可以一点就通才是王道。
...全文
2126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rex237 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dbzhang800 的回复:]

引用 1 楼 killua_hzl 的回复:

正则表达式其实还是一个很复杂的东西,主要是用得少了

顶LZ,学习了

正则很复杂,而且它有自身的一套规则,具体下来和Qt关系反倒不大。

楼主这个倒是简单的东西

先是用了 QString 成员函数 arg(),而后就是常规的正则
"([^a-z\\s]{2,8})(yuan)(\\s)"

匹配模式,yuan前面2-8……
[/Quote]

如果己经用setCaseSensitivity(Qt::CaseInsensitive)把大小写敏感关掉,就不匹配ABCyuan了。
tujiawei2006412212 2010-10-15
  • 打赏
  • 举报
回复
还没用到,先收藏了
1900_in_bj 2010-10-15
  • 打赏
  • 举报
回复
正则表达式很强大,入门教程推荐:
http://deerchao.net/tutorials/regex/regex.htm
dbzhang800 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 killua_hzl 的回复:]

正则表达式其实还是一个很复杂的东西,主要是用得少了

顶LZ,学习了
[/Quote]
正则很复杂,而且它有自身的一套规则,具体下来和Qt关系反倒不大。

楼主这个倒是简单的东西

先是用了 QString 成员函数 arg(),而后就是常规的正则
"([^a-z\\s]{2,8})(yuan)(\\s)"

匹配模式,yuan前面2-8个非小写和空白的字符,yuan后面一个空白字符

题外:
这个正则估计是想提取一些价格,比如 222yuan 22.2yuan 什么的,但它也匹配 ABCyuan 等,却不匹配 22.2 yuan 这种
  • 打赏
  • 举报
回复
正则表达式其实还是一个很复杂的东西,主要是用得少了

顶LZ,学习了
enum_623 2010-10-14
  • 打赏
  • 举报
回复
学习了...
ailinty 2010-10-14
  • 打赏
  • 举报
回复
QString str[3] = {"袁yuan", "远yuan", "xxx"};
for(int i=0; i<2; i++)
{
int ret = regExp.indexIn(str[i]),0,QRegExp::CaretAtZero);
if(ret > -1)
{
//找到匹配的内容
QString out = regExp.cap(1).toAscii().data();
//结果out = "袁"; //i==0;
// "远" //i==1;
}
}

从上面可以看出,它得到的是str 的所有yuan前面的汉字。我明白了,2楼说的是对的。谢谢2楼跟4楼。
wxj120bw 2010-10-14
  • 打赏
  • 举报
回复
2楼的解释应该没什么问题 楼主有什么出入说下
ailinty 2010-10-14
  • 打赏
  • 举报
回复
我怎么感觉你说的跟它实际的功能有点出入,困惑中。。。不知道2楼说的对不对,但是我总感觉有那么点问题。谁能继续解答。3Q.

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧