• 5046阅读
  • 7回复

[提问]请教正则表达式问题:同时匹配多了字符串 [复制链接]

上一主题 下一主题
离线snowfield
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-07
在用QRegExp时,想用正则表达式搜索字符串。希望能够匹配多个指定字符串,但不要求顺序一致。
比如,希望匹配含有one two three的字符串
one little, two little, three little indians和
three little, two little, one little indians都能成功匹配
谢谢!
离线wxj120bw

只看该作者 1楼 发表于: 2011-11-08
回 楼主(snowfield) 的帖子
(one|two|three).*(one|two|three).*(one|two|three)
离线snowfield
只看该作者 2楼 发表于: 2011-11-08
Re:回 楼主(snowfield) 的帖子
引用第1楼wxj120bw于2011-11-08 08:26发表的 回 楼主(snowfield) 的帖子 :
(one|two|three).*(one|two|three).*(one|two|three)

谢谢!的确这是一种解决方法,但问题是如果有更多关键字的时候这样就不太可行了,是不是。比如有5个、10个关键字。有没有一种更通用简洁些的方法呢?
离线wxj120bw

只看该作者 3楼 发表于: 2011-11-08
回 2楼(snowfield) 的帖子
(?<=three|two|one) little
这个简洁些 但这两个正则都有问题 匹配的字符串可能不同时含有three two one
离线snowfield
只看该作者 4楼 发表于: 2011-11-08
Re:回 2楼(snowfield) 的帖子
引用第3楼wxj120bw于2011-11-08 10:06发表的 回 2楼(snowfield) 的帖子 :
(?<=three|two|one) little
这个简洁些 但这两个正则都有问题 匹配的字符串可能不同时含有three two one

是的,这样的确有这个问题。(one|two|three).*(one|two|three).*(one|two|three)这个也有个问题,就是只能匹配三个关键字,多于三个的就匹配不到了。
离线wxj120bw

只看该作者 5楼 发表于: 2011-11-08
回 4楼(snowfield) 的帖子
第二个尝试了吗 满足要求吗
离线snowfield
只看该作者 6楼 发表于: 2011-11-10
Re:回 4楼(snowfield) 的帖子
引用第5楼wxj120bw于2011-11-08 11:33发表的 回 4楼(snowfield) 的帖子 :
第二个尝试了吗 满足要求吗

试过,还是不能满足要求。继续救助!
离线dbzhang800

只看该作者 7楼 发表于: 2011-11-10
Re:Re:回 4楼(snowfield) 的帖子
引用第6楼snowfield于2011-11-10 07:12发表的 Re:回 4楼(snowfield) 的帖子 :
试过,还是不能满足要求。继续救助!

这种东西,连着几个 QString::contains() 应该就足够了吧?应该用不着正则
快速回复
限100 字节
 
上一个 下一个