是否可以仅使正则表达式匹配文本的第一行?如果我有文字:
这是第一行 这是第二行。 ...
它匹配“这是第一行。”,无论第一行是什么。
答案 0 :(得分:24)
这听起来更像是文件句柄缓冲区的作业。
您应该能够将第一行与:
匹配/^(.*)$/m
(一如既往,这是PCRE语法)
/m
修饰符使^
和$
匹配嵌入的换行符。由于没有/g
修饰符,它只会处理第一个匹配项,即第一行,然后停止。
如果您使用的是shell,请使用:
head -n1 file
或作为过滤器:
commandmakingoutput | head -n1
请澄清您的问题,如果这不是您正在寻找的。 em>
答案 1 :(得分:15)
是的,你可以。
javascript中的示例:
"This is the first line.\n This is the second line.".match(/^.*$/m)[0];
返回
"This is the first line."
修改强>
解释正则表达式:
match(/^.*$/m)[0]
^
:行首.*
:任何字符(。),0次或更多次(*)$
:行尾。m
:多线模式(。也像\ n一样)[0]
:获取结果数组的第一个位置答案 2 :(得分:14)
如果您需要第一行,无论如何,请转到:
\A.*
无论如何,它都会选择第一行。
答案 3 :(得分:0)
还有一个负面的后向功能(PowerGREP或Perl风格)。它非常适合我的目的。 正则表达式:
(?<!\s+)^(.+)$
其中
(?<!\s+)
是负向后看-正则表达式仅匹配以下字符串
前面没有空格(\代表换行符)^
是字符串的开头(.+)
是一个字符串$
是字符串的结尾