0

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

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

4

1 回答 1

1

ECF您的正则表达式对和的捕获方式不同COURT。您可以使用创建非捕获组?:

text.scan(/(?:ECF|COURT)\w+/)
# => ["ECFalmdce", "COURTalndce"]

编辑

关于非捕获组:您可以使用它们通过括号创建模式而不捕获模式。

它们是诸如(?:pattern)

您可以在http://www.regular-expressions.info/refadv.html找到有关正则表达式的更多信息

于 2013-04-17T22:58:39.773 回答