仅在上一行不是以相同字符开头的情况下,我才尝试在行首替换星号*
或其他特定字符。
换句话说
Something.
* some bullet point
与
Something.
* some bullet point
我正在尝试
s/\n[^\*](.+?)\n\*/\n$1\n\n*/ms;
但没有结果。
理想情况下是perl-但我可能可以翻译其他语言
答案 0 :(得分:2)
如果要逐行读取文件,请使用标志变量来记住上一行是否以星号开头:
#!/usr/bin/perl
use warnings;
use strict;
my $previous;
while (<DATA>) {
print "\n" if /^\*/ && ! $previous;
$previous = /^\*/;
print;
}
__DATA__
Something.
* some bullet point
* but keep this
答案 1 :(得分:1)
您的正则表达式存在一些问题。
#!perl
use strict;
my $txt = <<EOT;
Something.
* some bullet point
EOT
$txt =~ s/^([^\*][^\n]*\n)\*/$1\n\*/mg;
print $txt;
有效。