正则表达式:在文档中的任何位置查找字符,但仅在以特定单词开头的行上查找

时间:2012-10-02 20:57:11

标签: regex

我有一个大文本文件,其中包含以下格式的数据:

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:”开头的行?我已经尝试过lookbehinds和分组,但我有限的正则表达式知识只是让我旋转。有什么想法吗?谢谢!

编辑:对不起,昨晚我离桌子很远。不知道我正在使用什么样的正则表达式,它是用于Sublime Text 2中的高级搜索。为了澄清,我试图在BASENAME行上找到下划线,以便我可以将它们更改为破折号。所以我正在寻找一个只返回下划线的RegEx。

2 个答案:

答案 0 :(得分:0)

我建议^BASENAME:[^_]*_.*$。这将找到所有这些线。或者您想要单独找到所有下划线而不是包含行吗?

答案 1 :(得分:0)

我会使用分组来获取下划线,否则您将获得所有文本

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

您将在名为underscore的小组中找到下划线。

如果您的语言不支持命名组,则可以使用

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