regex - Perl Regex - 打印匹配的值

标签 regex perl

打印匹配值的 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/

相关文章:

perl - 为什么 "use lib"这样不生效?

perl - 如何获取创建 Perl 子例程引用的文件和行号?

php - 用于替换字符串中两个不同单词之间的单词的正则表达式

java - 由空格分隔的 9 个唯一数字的正则表达式?

perl - 我可以在 OS X 10.5 上使用 dtrace 来确定我的哪个 perl 子程序导致的内存分配最多吗?

regex - 确定与 perl 中的正则表达式匹配的部分

regex - 如何使用 linux regex 命令将行乘以范围

php - 在php中使用正则表达式查找字符串中单词的多次出现

ruby - 选择正则表达式的第 n 个匹配项

xml - 如何在 perl 中编辑 XML 文件的内容?