打印匹配值的 perl 正则表达式是什么?例如,我想打印 195
从这个字符串
"2011-04-11 00:39:28,736::[main]::INFO (Main.java:73) Test.Main::main() Total Successful Transactions = 195".
我怎样才能做到这一点?提前致谢
最佳答案
您可以在正则表达式中使用括号来捕获子字符串。捕获的组存储在 $1、$2 等中。例子:
while (<>) {
if (/Total Successful Transactions = (\d+)/) {
print "$1\n";
}
}
或者,稍微短一点:while (<>) {
print "$1\n" if /Total Successful Transactions = (\d+)/;
}
您还可以利用列表上下文中的匹配运算符 ( //
) 返回组匹配内容的列表这一事实:$\ = '\n'; # Output newline after each print.
while (<>) {
print for /Total Successful Transactions = (\d+)/;
}
这使您可以编写紧凑的单行(-l
选项会自动为每个打印添加换行符等):perl -lne 'print for /Total Successful Transactions = (\d+)/'
关于regex - Perl Regex - 打印匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617314/