我有一个文本文件。我正在尝试搜索逗号后跟日期,例如",08/18/2014"。
看起来我的代码找到了它,但它用逗号和新行替换它并删除它之后的所有内容。
if ($firstline =~ s|\,(\d{2}\/.*)|\,\n|g){
print "$firstline";
如何在逗号和日期之间添加新行,而不删除我的文字和日期?
感谢。
答案 0 :(得分:2)
您可以在替换表达式中引用捕获组。我还扩展了正则表达式以完全匹配日期:
if ($firstline =~ s|,(\d{2}-\d{2}-\d{4})|,\n$1|g) {
print "$firstline\n";
}
答案 1 :(得分:2)
使用前瞻/后退:
s|(?<=,)(?=\d{2}\/)|\n|g
或
s|,\K(?=\d{2}\/)|\n|g # Probably faster, but requires 5.10+
答案 2 :(得分:0)
类似于亨特的答案,没有扩展的正则表达式,如下:
(哦,我不认为你需要在逗号之前使用反斜杠):
$firstline = "hello world ,10/20/1987, sounds great to me"; # testing...
if ($firstline =~ s|,(\d{2}/)|,\n$1|g){
print "$firstline";
}
输出:
hello world ,
10/20/1987, sounds great to me