在应用s///运算符后,有没有办法找出替换("旧"文本)的内容?我试过做:
if (s/(\w+)/new/) {
my $oldTxt = $1;
# ...
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.$1未定义.
你的代码适合我.从真实的终端窗口复制并粘贴:
$ perl -le '$_ = "*X*"; if (s/(\w+)/new/) { print $1 }'
X
Run Code Online (Sandbox Code Playgroud)
你的问题必须是别的.
如果您使用的是5.10或更高版本,则不必使用潜在的性能消除$&.${^MATCH}来自/p标志的变量执行相同的操作,但仅适用于指定的正则表达式:
use 5.010;
if( s/abc(\w+)123/new/p ) {
say "I replaced ${^MATCH}"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |