我对使用 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