2013-04-17 27 views
0

我試圖掃描下面的字符串與下面的正則表達式:掃描字符串使用Ruby正則表達式

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"]] 

什麼是與零的交易,沒有任何人有寫正則表達式的更有效的方式,並沒有任何人有在比賽組鏈接到更多的文檔?

回答

1

您的正則表達式對於ECFCOURT的捕獲方式不同。您可以創建非捕獲組,?:

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

編輯

關於非捕獲組:您可以使用它們沒有捕捉模式創建使用括號的模式。

他們的模式,如(?:pattern)

你可以找到http://www.regular-expressions.info/refadv.html

+0

正則表達式的更多信息,什麼是不可捕捉的羣體? – Utopia025

+0

不要捕捉整個模式。使用'/(?:ECF | COURT)\ w + /'可以避免創建子數組。 –

相關問題