我有一个文本,其中包含在中间的某个地方以下字符串:
- 28号卫星B158 RGX 1100
- 28号卫星胡佛0005 RGX B158 RGX 1100 1200
我只想捕获以下组: - 28号卫星B158 RGX 1100
- 28号卫星B158 RGX 1100
为了找到第一个选项,我使用了以下正则表达式:
(\w{3}\d{2})\s+([B]\d{3})\s+(\w{3})\s+(\d{4})\s+(\d{4})
示例:https://regexr.com/772aq(文本中仅包含第一个选项)
但是,当我尝试查找第二个选项时,我添加了一个非捕获组,这反过来跳过了第一个选项:
(\w{3}\d{2})\s+(?:hoover\s+\d{4}\s+RGX\s+)(\[B]\d{3})\s+(\w{3})\s+(\d{4})\s+(\d{4})
示例:https://regexr.com/772at(两个选项都包含在文本中,但仅匹配第二个选项)
基本上,我添加了一个非捕获组(?:),它看起来(应该忽略)单词hoover,空格,4位数,空格,单词RGX,空格。
任何帮助都很感激。谢谢!
编辑:在www.example.com的示例中添加文本regexr.com以进行澄清。
1条答案
按热度按时间bqf10yzr1#
正如我所看到的,你应该只使组可选
(\w{3}\d{2})\s+(?:hoover\s+\d{4}\s+RGX\s+)?([B]\d{3})\s+(\w{3})\s+(\d{4})\s+(\d{4})
。也不太清楚为什么你已经逃脱了[
之前的B
,但可能是一个错别字。