2016-05-01 13 views
1

テキストを持ち、数字であるQStringからすべての行を削除したいと思います。QRegExp QStringからのテキストで行を削除する

私のQStringの出力はようになり、正規表現実行する前に:

hello 

1 

world 

2 

私は

QString.remove(QRegExp("(^[a-z]*\\n$)")) 

のようなものを実行した場合、私のQStringの出力は次のようになります。

1 

2 
+0

何が問題なのですか?正規表現は機能していないのですか? – rock321987

+0

正しい正規表現を見つけることができません。 – bandito40

答えて

1

QRegExpのでをPerlのような修飾子を持たない/m修飾子を使用する場合は、 e (^|\n)($|\n)が代わりに使用されます。このコードは行だけを削除することを

QString t = "hello\n\n1\n\nworld\n\n2"; 
t.replace(QRegExp("(^|\r?\n)[a-z]*\r?\n(\r?\n|$)"), "\\1"); 

:また、キャリッジリターンを含むことが心の改行にベアリング、私はregex demo

のQtを参照してください

(^|\r?\n)[a-z]*\r?\n(\r?\n|$) 

ようなものを使用したいです小文字のASCII文字とそれに続く改行のみで構成されています。数字でない行をすべて削除する必要がある場合は、QRegExp("(^|\r?\n)[^\\d\n]+\r?\n(\r?\n|$)")を使用してください。ここで、[^\d\n]は、改行ではなく数字以外の文字と一致します。

+0

私の必要を満たすためにあなたの例を得ることができませんでした。私はちょうどそれをQStringListに変換し、それを行ごとに行うことになった。私が正規表現でそれをやりたかったのは、いくつかのコード行を保存することだけでした。彼らは答えてくれてありがとう。 – bandito40

+0

多くのニュアンスがあるので、複数行の問題に役立つことは常に困難です。あなたの問題を解決する方法を見つけてうれしいです。 –

関連する問題