0

次の形式のデータを含む大きなテキスト ファイルがあります。

AUTHOR: John_Doe
TITLE: This is a title
BASENAME: this_is_a_title

AUTHOR: Jill_Doe
TITLE: Another Title
BASENAME: another_title

AUTHOR: Jack
TITLE: Last Title
BASENAME: last_title

'BASENAME:' で始まる行だけで、ドキュメント内のすべてのアンダースコアを見つけるにはどうすればよいですか? 後読みとグループ化を試しましたが、正規表現の知識が限られているため、ぐるぐる回っています。何かご意見は?ありがとう!

編集:申し訳ありませんが、昨夜は私の机から離れていました。私が使用している正規表現のフレーバーがわからないのは、Sublime Text 2 での高度な検索用です。明確にするために、BASENAME 行のアンダースコアを見つけて、ダッシュに変更できるようにしています。だから私はアンダースコアのみを返す正規表現を探しています。

4

2 に答える 2

0

私はお勧めし^BASENAME:[^_]*_.*$ます。これにより、そのような行がすべて見つかります。または、含まれている行ではなく、すべてのアンダースコアを個別に検索しますか?

于 2012-10-02T21:02:32.827 に答える
0

グループ化を使用してアンダースコアを取得します。そうしないと、すべてのテキストが取得されます

(?<=^BASENAME:)(.+?(?<underscore>_))*

という名前のグループにアンダースコアがありますunderscore

あなたの言語が名前付きグループをサポートしていない場合は、代わりに使用できます

(?<=^BASENAME:)(.+?(_))*
于 2012-10-02T21:50:17.173 に答える