使用Ruby正则表达式扫描字符串

时间:2013-04-17 22:47:19

标签: ruby regex pattern-matching scanf

我正在尝试使用以下正则表达式扫描以下字符串:

 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的交易是什么,有没有人有更有效的方式编写正则表达式,有没有人有关于匹配组的进一步文档的链接?

1 个答案:

答案 0 :(得分:1)

您的正则表达式对ECFCOURT的捕获方式不同。您可以使用?:

创建非捕获组
text.scan(/(?:ECF|COURT)\w+/)
# => ["ECFalmdce", "COURTalndce"]

修改

关于非捕获组:您可以使用它们在不捕获模式的情况下使用括号创建模式。

它们是(?:pattern)

等模式

您可以在http://www.regular-expressions.info/refadv.html

找到有关正则表达式的更多信息