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

Regex 选择具有特定单词的句子中的最后一个单词,regex,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

在下面的输出中,我需要搜索包含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

类似上面的内容将搜索“REGEXX”,然后捕获它后面的最后一个非空字符串。最后一个“单词”实际上,非空白字符序列将在捕获组1中可用。

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

\bREGEXX(?:[^\S\r\n]+\S+)*[^\S\r\n]+(\S+)[^\S\r\n]*$
结果在第一组中

或者更简单但有更多回溯:

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

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

如果手头有awk,您可以尝试以下方法:

awk '/REGEXX/ {print $NF}'

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

您使用哪种语言进行此操作?为什么你需要一个正则表达式?似乎同样的事情也可以通过简单快速的字符串函数来实现。你尝试了什么?这不是一个代码请求站点。@TimPietzcker项目中使用的框架迫使我使用regex,它有一些关于学习正则表达式的惊人信息。我建议您学习它们:-终于能够通过使用^.*REGEXX\s*.\s+\s+$获得所需的输出,谢谢您的时间。在给出的3个答案中,这一个非常接近于工作解决方案:^.*REGEXX\s*.\s+\s+$
awk '/REGEXX/ {print $NF}'