我有一个文本文件,格式类似下面这样:
Hi
how are you
<blank>
<blank>
abcd
<blank>
defgh
opqr
<blank>
我想打印所有含有“一些文本”空格空格“一些文本”模式的行,例如
how are you
<blank>
<blank>
abcd
我在考虑使用join方法并查找匹配模式,但不确定如何实现。(当我说空白时,指的是空行)
我有一个文本文件,格式类似下面这样:
Hi
how are you
<blank>
<blank>
abcd
<blank>
defgh
opqr
<blank>
how are you
<blank>
<blank>
abcd
我在考虑使用join方法并查找匹配模式,但不确定如何实现。(当我说空白时,指的是空行)
/^(?:(?!\n)\s)*\n/m
/^.*\S.*\n/m
因此,您想要打印所有以下情况的实例:
/
^
(?:
.*\S.*\n
(?: (?:(?!\n)\s)*\n ){2}
)+
.*\S.*\n
/mx
perl -0777ne'print /^(?:.*\S.*\n(?:(?:(?!\n)\s)*\n){2})+.*\S.*\n/mg' file
/^\n/m
/^.+\n/m
perl -0777ne'print /^(?:.+\n\n\n)+.+\n/mg' file
print "$1\n$1" while ($file =~ /(.*)(?=\n\1(?:\n|$))/mg);
.* = 匹配任何字符,尽可能多地抓取
() = 捕获组,将 .* 存储到 $1 中
(?= ... ) = 向前查看,以便该字符串的那部分可以用于下一次匹配
\1 = 第一个捕获组中捕获的内容(即 $1)
(?: ... ) = 非捕获组
foo BLANK BLANK bar BLANK BLANK moo BLANK BLANK mar
应该如何处理? - ikegami