我有多个文本被所有的结构如下:如何从正则表达式组中提取信息列表?
> Record: 24G3KL
> Source: Whatever
> System Time:Oct 10, 2017 19:01:00 (MST)
> Result: finalText
有一些更多的文本之前和之后这一点,但它并不重要。
我们的目标是在每次遇到> Result: finalText
的行时提取6个字母数字字符值(这里是“24G3KL”)。单词“finalText”可以不同(例如,它可以是abcdefText或其他任何东西)。我只对值“finalText”感兴趣。
我使用下面的正则表达式:
([A-Z0-9]{6})(?:.|\n)*(?:\s*finalText)
它工作正常,而6个字母数字字符值提取到正则表达式组1
在记事本+ +,我用的查找窗口,把我的正则表达式在“查找内容:”字段中,选择正则表达式,然后单击按钮在当前文档中查找全部。
结果是一个看起来像这个名单:
Line 85186: > Result: finalText
Line 86200: > Result: finalText
Line 87258: > Result: finalText
Line 87721: > Result: finalText
Line 87761: > Result: finalText
我觉得这真是奇怪,因为“finalText”不是正则表达式来捕获(开始“?”)。我期望看到我的组1(我所有的6个字母数字字符值),而不是那个。
在底部查找结果窗口,我希望看到的,而不是“finalText”值的6个字母数字字符值...
有没有办法做到这一点?
乍一看,您使用Notepad ++得到的结果与您的正则表达式完美匹配。所以我不明白这个正则表达式如何在另一个上下文(哪一个?)中给你“Record:”引用。 – cFreed
我不确定你的正则表达式是否正确。它看起来像'(?:。| \ n)*(?:\ s * finalText)'会搜索,直到找到一个'finalText',跳过任何其他'Result:'不匹配'finalText'的行。所以你会捕获你不想要的'Record'字符串。 – Blorgbeard
有关我的意思,请参阅:https://regex101.com/r/L7DQlv/1。 – Blorgbeard