2014-03-06 59 views
0

我想捕捉明星在下面的字符串替换的文本的第二occurence:正则表达式使用Qt捕捉一些文字

&nbsp;SW * <br> 

即字符串开始&nbsp;SW在为QString与<br>结束,使用正则表达式与Qt。

这里一个例子:该字符串是

&nbsp;&nbsp;SW = min(1, max(0, pow(10, -0.2 - 6.5) ** (1.0/0.2)))<br> 

和预期的结果是

= min(1, max(0, pow(10, -0.2 - 6.5) ** (1.0/0.2))) 

到目前为止,我有QRegExp rx("^[\&nbsp;SW](.*)[<br>]$");未编制。

你会怎么做?

+0

我会从关于正则表达式的教程开始。看看一些例子以及你如何编写语法。然后,使用在线正则表达式测试程序尝试一些示例行,然后从那里开始工作。 – MatthiasB

回答

1

编译问题可能是由于试图跳过&符号(\&)。但除此之外,你的正则表达式大多是正确的,只是过度使用字符组([]),它们不适用于分组。这种表达的作品在我的测试:&nbsp;SW(.*)<br>,所以你的情况,你会做这样的事情

QRegExp rx("&nbsp;SW(.*)<br>") 
0

确切模式是QLatin1String(".*&nbsp;SW([^<]*)<br>.*")和捕获此代码为我工作

 QRegExp rx(QLatin1String(".*&nbsp;SW([^<]*)<br>.*")); 

     int p = 0; 
     QString cap ; 
     if((p = rx.indexIn(str, p)) != -1) 
      cap = rx.cap(1).trimmed(); 

诺塔好处:应该捕获括号内的元素的第一次出现,而不是cap(1)而不是cap(0),其捕获整个模式而不是括号的内容。