Regex 选择具有特定单词的句子中的最后一个单词
在下面的输出中,我需要搜索包含REGEXX的行,并在该行中选择最后一个单词。在下面的示例中,它是YYY-0。我该怎么做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
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}'