Sek*_*har 10 regex perl substitution
有一个文件dummy.txt
内容如下:
9/0/2010
9/2/2010
10/11/2010
Run Code Online (Sandbox Code Playgroud)
我必须将月份部分(0,2,11)改为+1,即(1,3,12)我写了替换正则表达式如下
$line =~ s/\/(\d+)\//\/\1+1\//;
Run Code Online (Sandbox Code Playgroud)
这是打印
9/0+1/2010
9/2+1/2010
10/11+1/2010
Run Code Online (Sandbox Code Playgroud)
如何使它添加 - 3数字而不是执行字符串concat?2+1??
cod*_*ict 16
三个变化:
e修饰符来允许替换部件中的表达式.g修饰符.如果每行有一个日期,则不需要这样做.$1在替换方使用,而不是反向引用这应该工作:
$line =~ s{/(\d+)/}{'/'.($1+1).'/'}eg;
Run Code Online (Sandbox Code Playgroud)
此外,如果你的正则表达式包含你正在使用的分隔符(/在你的情况下),最好选择一个不同的分隔符({}上面),这样你就不必逃避正则表达式中的分隔符,使你的正则表达式干净.
| 归档时间: |
|
| 查看次数: |
4430 次 |
| 最近记录: |