【发布时间】:2013-07-04 22:07:29
【问题描述】:
对于每一行,我需要在字母数字符号的第一个匹配之前添加一个分号,但仅适用于第一次出现分号之后的字母数字符号。
例子:
输入:
00000001;Root;;
00000002; Documents;;
00000003; oracle-advanced_plsql.zip;file;
00000004; Public;;
00000005; backup;;
00000006; 20110323-JM-F.7z.001;file;
00000007; 20110426-JM-F.7z.001;file;
00000008; 20110603-JM-F.7z.001;file;
00000009; 20110701-JM-F-via-summer_school;;
00000010; 20110701-JM-F-via-summer_school.7z.001;file;
期望的输出:
00000001;;Root;;
00000002; ;Documents;;
00000003; ;oracle-advanced_plsql.zip;file;
00000004; ;Public;;
00000005; ;backup;;
00000006; ;20110323-JM-F.7z.001;file;
00000007; ;20110426-JM-F.7z.001;file;
00000008; ;20110603-JM-F.7z.001;file;
00000009; ;20110701-JM-F-via-summer_school;;
00000010; ;20110701-JM-F-via-summer_school.7z.001;file;
有人可以帮我创建 Perl 正则表达式吗?我需要在程序中使用它,而不是作为单线器。
【问题讨论】:
-
你试过什么?请向我们展示您自己的尝试。这使我们更容易告诉您哪里出了问题以及如何解决它。另外,你是把整个输入放在一个字符串中,还是逐行读取?
-
其实我不知道如何创建一个符合我要求的正则表达式。我知道基本的正则表达式,并试图获得更多关于它的知识。然而,教程非常冗长(perldoc.perl.org/perlre.html)。我唯一的想法是,像这样索引每一行 while ( $result != -1 ) { $offset = $result + 1; $result = index($string, $char, $offset);并检查空格何时结束。我使用数组逐行读取输入。但这不再是正则表达式了。
标签: regex perl csv substitution