正则表达式只匹配第一行?

时间:2010-09-11 02:13:00

标签: regex

是否可以仅使正则表达式匹配文本的第一行?如果我有文字:

这是第一行 这是第二行。 ...

它匹配“这是第一行。”,无论第一行是什么。

4 个答案:

答案 0 :(得分:24)

这听起来更像是文件句柄缓冲区的作业。

您应该能够将第一行与:

匹配
/^(.*)$/m

(一如既往,这是PCRE语法)

/m修饰符使^$匹配嵌入的换行符。由于没有/g修饰符,它只会处理第一个匹配项,即第一行,然后停止。

如果您使用的是shell,请使用:

head -n1 file

或作为过滤器:

commandmakingoutput | head -n1

请澄清您的问题,如果这不是您正在寻找的。

答案 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+)是负向后看-正则表达式仅匹配以下字符串 前面没有空格(\代表换行符)
  • ^是字符串的开头
  • (.+)是一个字符串
  • $是字符串的结尾