如何使用正则表达式剪切两个单词之间的文本?

时间:2013-06-01 14:16:07

标签: regex qstring

我是正则表达式的初学者,我想剪切一些文字放在另外两个单词之间。我正在使用QT来做到这一点。一些例子:

<li class="wx-feels">
Feels like <i><span class="wx-value" itemprop="feels-like-temperature-fahrenheit">55</span>&deg;</i>
</li>

<li class="wx-feels"> Feels like <i><span class="wx-value" itemprop="feels-like-temperature-fahrenheit">55</span>&deg;</i> </li>

我想得到

从上面的代码中,特别是一个数字 Feels like <i><span class="wx-value" itemprop="feels-like-temperature-fahrenheit">55</span>&deg; ,我的想法是首先从文本中删除整行,然后搜索nubers,但我无法从全文中恢复它。

我输入了类似的东西:

Feels like <i><span class="wx-value" itemprop="feels-like-temperature-fahrenheit">55</span>&deg;

55

55

是一个完整的文本,但是一个列表只包含我不想要的那些子串,是否有一个posibity将QString分成三个部分? 第一个 - 开头的文字(我不想要) 第二个 - 想要的文字 第三 - 文本的其余部分?

1 个答案:

答案 0 :(得分:0)

描述

此正则表达式将收集li标签中{+ 1}}类的li标签内的内部字符串,它还会捕获span标记内的数值。

wx-feels

enter image description here

组0获取整个字符串,包括打开和关闭LI标记

  1. 获取LI class属性的开放引用。这允许我们在值
  2. 之后找到正确的关闭引用
  3. 直接在LI标签内获取字符串
  4. 获取itemprop属性的开放引用
  5. 从范围内部文本中获取数字
  6. 实施例

    这个PHP示例只是为了展示正则表达式的工作原理。

    <li\b[^>]*\bclass=(["'])wx-feels\1[^>]*?>(.*?\bitemprop=(['"])feels-like-temperature-fahrenheit\3[^>]*>(\d+).*?)<\/li>

    声明

    使用正则表达式解析html可能会有问题,因为边缘情况很多。如果您控制输入文本或者它总是像您的样本一样基本,那么您应该没有问题。

    如果QT有一个,我建议使用HTML解析工具来捕获这些数据。

相关问题