1

私は私たち Qt です。関数呼び出しを具体的に探すテキスト文字列がありますxyz.set_name()。この呼び出しの最後の発生をキャプチャしたいのですが、それを含む行が . で始まる場合は否定します#。これまでのところ、関数呼び出しに一致する正規表現を取得しましたが、一致した行を否定する方法が#わかりません。最後の出現をキャプチャする方法もわかりません。すべての一致が1つのキャプチャグループに入れられる理由もわかりません.

[().\w\d]+.set_name\(\)\s*

これは私がやりたいことです

abc.set_name() // match
# abc.set_name() // don't match
xyz.set_name() // match and capture this one

より明確にするための更新:

qDebugで印刷すると、私のテキストはこのように読めます

Hello\nx=y*2\nabc.set_name()   \n#xyz.set_name()

\n改行の長い文字列です。

更新: テスト用のより長いテスト文字列。これについて提案されたすべての正規表現を試しましたが、うまくいきませんでした。何が欠けているのかわからない。 https://regex101.com/r/vXpXIA/1

更新 2: 最初の更新をスクラッチします。正規表現を使用する場合は考慮する必要は\nありqDebug()ません。

4

3 に答える 3