2011-12-13 35 views
3

比如我有一個字符串如何更改字符串中的特殊符號?

s = "start |foo bar|, middle, |reg ex| end" 

,我想改變|在方括號,得到

"start [foo bar], middle, [reg ex] end" 

我如何通過使用正則表達式實現的呢? 至少,我想捕捉|foo bar||reg ex|,但我的方法:

/\|.+\|/ 

捕捉|foo bar|, middle, |reg ex|

s.match(/\|.+\|/)[0] # => "|foo bar|, middle, |reg ex|" 

回答

2

嘗試使正則非貪婪:

/\|.+?\|/ 

/\|[^|]+\|/ 
2
"start |foo bar|, middle, |reg ex| end".gsub(/\|(.+?)\|/, '[\1]') 
=> "start [foo bar], middle, [reg ex] end" 

"start |foo bar|, middle, |reg ex| end".gsub(/\|(.+?)\|/) do |str| 
    puts $1 
end 

foo bar 
reg ex 
=> "start , middle, end" 
相關問題