Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt正则表达式与HTML标记InnerText匹配_Html_Regex_Qt - Fatal编程技术网

Qt正则表达式与HTML标记InnerText匹配

Qt正则表达式与HTML标记InnerText匹配,html,regex,qt,Html,Regex,Qt,我有一个带有一个…标记的html文件。需要什么正则表达式来匹配pre中的所有内容 QString pattern = "<pre>(.*)</pre>"; QRegExp rx(pattern); rx.setCaseSensitivity(cs); int pos = 0; QStringList list; while ((pos = rx.indexIn(clipBoardData, pos)) != -1) { list << rx.cap(1)

我有一个带有一个
标记的html文件。需要什么正则表达式来匹配pre中的所有内容

QString pattern = "<pre>(.*)</pre>";
QRegExp rx(pattern);
rx.setCaseSensitivity(cs);

int pos = 0;
QStringList list;
while ((pos = rx.indexIn(clipBoardData, pos)) != -1) {
  list << rx.cap(1);
  pos += rx.matchedLength();
}
int begin = clipBoardData.indexOf("<pre");
int end = clipBoardData.indexOf("</body>");

QString result = data.mid(begin, end-begin);
QString模式=“(*)”;
(<pre>.*?</pre>)+
QRegExp-rx(模式); rx.设置案例敏感性(cs); int pos=0; QStringList表; 而((pos=rx.indexIn(剪贴板数据,pos))!=-1){ 列表 相反,请使用真正的HTML解析器,例如,HTML不是,您不使用正则表达式来解析它


相反,使用加载XML,然后查找前置节点,然后提取其内容。

我使用子字符串:

QRegExp re("(<pre>.*?</pre>)+", Qt::CaseInsensitive);
re.indexIn(html_input);
QStringList list = re.capturedTexts();

int begin=clipBoardData.indexOf(“我必须同意其他人的看法。Drupal 6.x和更早版本使用regex对HTML数据进行大量处理。如果创建64Kb或更大的页面,它会很快崩溃。因此,使用DOM或像您这样使用
indexOf()
是一个更好更快的解决方案

现在,对于那些有兴趣了解更多关于正则表达式的人,Qt使用perl实现。这意味着您可以使用lazy运算符。您的正则表达式将变成:

(*)+
要获取代码中的每个块(尽管如果只有一个块,则不需要问号和加号)。请注意,此处不需要正则表达式开头和结尾处的分隔符

QRegExp-re(“(.*?+”,Qt::不区分大小写);
关于indexIn(html_输入);
QStringList list=re.capturedTexts();

现在,列表应该有一个或多个标记。

对于这样一个简单的文件,要摘录一些文本?也许对内容进行子字符串比较简单…我不同意。如果您很了解文件结构,那么在其中查找内容应该与正则表达式无关。我不同意。如果您很了解文件结构,那么查找内容应该没有问题在中,正则表达式不应该有问题。@predrapanojlovic:如果文件结构稍有变化怎么办?如果有转义字符怎么办?我说得很准确:“如果你对文件结构很了解的话。”“。意思是,您已经生成了它,或者生成它的系统是一致的。@PredragManojlovic:这会导致非常脆弱的代码,很难更改(或者使更改导致微妙的错误)。恕我直言,这是不明智的。只是一个注释“?”不是贪婪的运算符。它是一个非贪婪的修饰符。这就是我使用“*?”的原因。”是的,但它的意思是:“这意味着你可以使用贪婪运算符”,而不是这意味着你可以使用非贪婪修饰符“@predrapanojlovic啊!Ooop!用正确的术语修正了我的答案。