例如我有一个字符串
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|"
答案 0 :(得分:2)
尝试使正则表达式非贪婪:
/\|.+?\|/
或
/\|[^|]+\|/
答案 1 :(得分: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"