【问题标题】:Perl - regular expression to filter out last wordPerl - 过滤掉最后一个单词的正则表达式
【发布时间】:2015-05-18 12:48:10
【问题描述】:

我一直在使用 perl 脚本,并且一直在尝试使用正则表达式从系统输出中过滤掉每一行的最后一个单词。 我使用以下命令列出所有服务,命令是:“service --status-all”该命令将输出一个包含所有可用服务的列表,例如:

rdisc is stopped  
rpcbind (pid 1339) running...  

我将输出放入一个数组中,并在每一行都大吃一惊:

chomp(my @service_data_1 = qx/$command_3/);

我只想打印出用户请求的服务,并通知用户该服务当前正在运行还是已停止。

我想知道如何使用正则表达式过滤掉每行的最后一个单词,我在任何地方都找不到任何解决我的问题的方法,而且在 stackoverflow 上也没有。 对此的任何帮助或意见将不胜感激。

【问题讨论】:

  • 你的预期输出是什么?
  • 什么,你的意思是像 'service status' 一样吗?

标签: regex perl


【解决方案1】:
print ("\n$1") if(/(\s+\S+$)/);

此正则表达式将打印每行的最后一个单词。 \s+ 匹配空格,\S+ 匹配除空格以外的任何内容。 \s+\S+$ 一起匹配空格后跟任何单词,包括行尾的特殊字符。

【讨论】:

    【解决方案2】:

    您可以使用以下正则表达式来匹配最后的单词..并将它们替换为''(空字符串)

    \w+$     // but this wont match words ending with other than [a-zA-Z0-9_]
    

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 2015-11-05
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      相关资源
      最近更新 更多