2011-01-23 145 views
2

我有一些可能的標題模式,我想使用Ruby正則表達式捕獲。Ruby正則表達式:複雜模式

  1. 只是標題
  2. 忽略|標題捕捉
  3. 忽略/標題捕捉
  4. [忽略]標題捕捉

我如何把這個變成一個正規表達式模式?

這僅與第二殼體方法處理:

def self.format_title(title) 
    title.match(/(?:.+)\|(.+)/).to_a.first.strip 
    end 

回答

1

[和第一其後]之間的匹配一切你代碼可以改寫爲:title[/\|(.+)/),1].strip

對於所有四種情況,我記錄修改爲使用gsub

def format_title title 
    title.gsub(/.+[\|\/]/,'').gsub(/^\[.+\]/,'').strip 
end 
1

嘗試此正則表達式:

/^(?:[^|]*\||[^\/]*\/|\[[^\]]*\])?(.+)/ 

任選的非捕獲組(?:[^|]*\||[^\/]*\/|\[[^\]]*\])由用於每一種情況下的圖案:

  • [^|]*\|火柴一切上升到第|
  • [^\/]*\/匹配一切到第一/,並
  • \[[^\]]*\]在開始串
+0

謝謝。它可以在除第一個外的所有情況下正常工作:http://www.rubular.com/r/fF6s7zkuuy – krn 2011-01-23 11:34:35