QRegExp带有引号的多行

时间:2018-05-07 13:13:32

标签: regex bash qt qregexp

我想使用QRegExp匹配下面示例代码中的第一个和最后一个引号:

echo "#!/bin/bash

VAR="Test"
Script content

" > $SCRIPT

我已经测试了几个不同的表达式,到目前为止我最接近的是使用QRegExp(“\”([^ \“] *)\”“),它只匹配同一行上的两个连续引号(在这种情况下“测试”)。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我对Qt一无所知,但从我读到的内容来看,QRegExp的功能非常有限,而且像通配符这样的东西可能会有问题。如果可能,请使用QRegularExpression类。我相信以下会做你想要的,但可能不适用于QRegExp。它可以在类似Perl的RegExp引擎中运行:

echo\s+["']((?:[^"']|["'](?!\s*>))+)["']

这样做是搜索“echo”后跟至少一个空格,然后匹配"'(我假设可以使用),然后是的任何内容不引号任何引号不是后跟>的内容,至少一次,尽可能多次,然后它与收尾引号相符。

重要的是要认识到正则表达式引擎需要某种方式来区分什么是起始引用和什么是结束。我在这里假设的是,起始引号始终以echo开头,结束引号后跟>。如果这些假设不正确,您可能需要调整一些事情。