选择具有特定单词的句子中的最后一个单词

时间:2013-07-28 19:03:22

标签: regex

在下面的输出中,我需要搜索包含REGEXX的行,在该行中我需要选择最后一个单词。在下面的示例中,它是YYY-0。我该怎么做?

 LOGICAL FILE MODIFIED:

 SYSTEM = x-YYY   UNIT = ALU

 PAGE      1
 LOG       LOG       SPARE  PHYSICAL           OBJ  SYSTEM     UNIT    DEVICE/
 FILE      FILE      FILE   FILE               IND   NAME      NAME    LOGICAL
 NBR  NAME  &  CLASS MODE   NAME                                        FILE

 1FF REGEXX   P                              1 X-YYY       ALU     YYY-0


 COMMAND EXECUTED

3 个答案:

答案 0 :(得分:1)

\bREGEXX\b.*\s(\S+)

上述内容将搜索“REGEXX”,然后捕获其后的最后一个非空字符串。您的最后一个'字'(可能是非空字符序列)将在捕获组1中可用。

答案 1 :(得分:1)

如果awk即将到来,您可以试试这个:

awk '/REGEXX/ {print $NF}'

其中NF是'字段数'在当前字符串中,$ 1,$ 2,...,$ NF是空格/制表符分隔的字段。

答案 2 :(得分:0)

您可以在多线模式下使用此模式:

\bREGEXX(?:[^\S\r\n]+\S+)*[^\S\r\n]+(\S+)[^\S\r\n]*$

(结果在第一个投资组中)

或更简单,但有更多的回溯:

\bREGEXX\b.*?(\S+)[^\S\r\n]*$

注意:正如Tim Pietzcker建议的那样,使用简单的字符串函数可以获得更好的结果。您可以逐行拆分文本,然后按空格拆分,然后在数组/列表中循环查找REGEXX