任何人都可以帮助我从以下示例文本中检索一些元素:
sdfaasdflj asdfjl;a
AB-12/34 BC-/85 CD-//8 DD-77
DE-78/9
EE-78-98
asdf; asdjf
有必要获得以下元素: AB-12/34,BC- / 85,CD - // 8,DD-77,DE-78/9
当我使用这样的正则表达式时:
\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b)
一切正常 - 所有必要的元素都被检索出来(EE元素除外,但无关紧要)。 问题是这一行是更复杂的正则表达式的一部分,所以当我尝试应用这样的正则表达式时:
(?s).*\sas.*?
\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b)*.*
.*as
它只返回第一个AB-12/34元素而没有别的。 如何纠正正则表达式以获取所有元素? TIA。
答案 0 :(得分:2)
要在示例中多次匹配块"(?<elements>\b[A-Z]{2}-[/0-9]+\b)*"
,您需要在其中包含空格。即:
"(?<elements>\s*\b[A-Z]{2}-[/0-9]+\b)*"
如果您不想捕获它,请尝试""(?:\s*(?<elements>\b[A-Z]{2}-[/0-9]+\b))*"
。但我不确定非捕获组内的命名捕获组如何工作。 =)