我正在尝试使用以下正则表达式扫描以下字符串:
text = %q{akdce ALASKA DISTRICT COURT CM/ECFalmdce
ALABAMA MIDDLE DISTRICT COURTalndce
}
p courts = text.scan(/(ECF\w+)|(COURT\w+)/)
理想情况下,我想要做的是扫描文本并拉出文本'ECFalmdce'和'COURTalndce' 使用我正在使用的正则表达式,我试图说我想要一个以COURT或ECF开头的字符串,后跟随机字符串。
返回的数组是:
[["ECFalmdce", nil], [nil, "COURTalndce"]]
与nil的交易是什么,有没有人有更有效的方式编写正则表达式,有没有人有关于匹配组的进一步文档的链接?
答案 0 :(得分:1)
您的正则表达式对ECF
和COURT
的捕获方式不同。您可以使用?:
text.scan(/(?:ECF|COURT)\w+/)
# => ["ECFalmdce", "COURTalndce"]
修改强>
关于非捕获组:您可以使用它们在不捕获模式的情况下使用括号创建模式。
它们是(?:pattern)