有没有人知道为什么我得到不同的结果取决于模式的顺序?正则表达式扫描结果
list1 = ["AA1", "AA2","AA", "AA+"]
list2 = ["AA1", "AA2","AA+", "AA"]
results1 = "somethin with AA+ in it".scan(Regexp.union(list1))
results2 = "somethin with AA+ in it".scan(Regexp.union(list2))
结果1输出“AA” 结果2输出“AA +”
我可misunderstandig如何扫描的作品,但我期待它返回每一次出现,因此这两个“AA”和“AA +”。另外我不明白为什么这个ouptut会根据所使用的字符串的顺序而变化。
未锚定的交替组匹配第一个分支,一旦分支匹配其他分支未被测试。 –
我不认为'Regexp.union()'在做你认为的事情。它创建一个匹配任何提供的表达式的单一正则表达式。它不会遍历列表并一次运行一个正则表达式匹配。 – Phylogenesis