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ファイルから何を取得したいですか? これは1つです...
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