gpt4 book ai didi

c++ - 括号和新行的 Qt/QRegExp 正则表达式或 "\r"?

转载 作者:行者123 更新时间:2023-11-28 07:43:23 30 4
gpt4 key购买 nike

我对使用 Qt QRegExp 捕获文本感到困惑。我希望从 PHP 代码中获取数据非常简单:

    public function asr($x)
{
echo "index";
}

解释:

    public function <can be more spaces or new lines...> asr($x) <can be more spaces or/and new lines or/and tabs...>
{
echo "index";
}

我想从 PHP 文件中获取什么?这是一个...

    public function asr($x)
{

我现在怎么被捕获了?

    QRegExp reg("(public|private|protected|static|final)(.*)function(.*)[\(](.*)[\)](.*)[\n](.*)‌​[\{]", Qt::CaseInsensitive);

解释:

当我尝试添加 [\{](\{) 从 PHP 文件中获取大括号时,它不会获取数据:

仅结果:

    public function asr($x)

相反:

    public function asr($x) {

注意:($x){之间可以是换行\n或者一些空格如\s.

这将是 (\))(\n|\s) 但运气不好 :(

使用示例代码解析的结果:

    if (file.open(QIODevice::ReadOnly))
{
QTextStream in(&file);

// regex for function with new line
QRegExp reg("((.*)public|private|protected|static|final)( *)function(.*)[(](.*)", Qt::CaseInsensitive);

// capture to list
QStringList list = reg.capturedTexts();

qDebug() << list;

while ( !in.atEnd() )
{

QString line_read = in.readLine();

//qDebug() << line_read; // read lines

qDebug() << reg.exactMatch(line_read); // find matches
}
}
}


FINAL RESULTS:

false
false
false
false
false
false
false
false
true // means found on this line for QRegExp policies
false
false
false
false
true
false
false
false
false
true
false
false
false
false
true
false
false
false
false
false
false
false

最佳答案

您必须在 "" 中使用 \\ 作为反斜杠。

编辑:

您也不必在 []

中转义 (){
QRegExp function("(public|private|protected|static|final)( *)function(.*)[(](.*)[)](.*)[{]", Qt::CaseInsensitive);
auto b = function.exactMatch( "public function ($d) \n {" );
b = function.exactMatch( "public function ($d){" );

对我有用。空格由 (.*)

使用

关于c++ - 括号和新行的 Qt/QRegExp 正则表达式或 "\r"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15392930/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com