Ruby 如何更改字符串中的特殊符号?
例如,我有一个字符串Ruby 如何更改字符串中的特殊符号?,ruby,regex,Ruby,Regex,例如,我有一个字符串 s = "start |foo bar|, middle, |reg ex| end" 我想更改方括号中的|,以便 "start [foo bar], middle, [reg ex] end" 如何使用regex实现它? 至少,我想捕获| foo bar |和| reg ex |,但我的方法是: /\|.+\|/ 捕获| foo bar |,中间,| reg ex | s.match(/\|.+\|/)[0] # => "|foo bar|, middle,
s = "start |foo bar|, middle, |reg ex| end"
我想更改方括号中的|
,以便
"start [foo bar], middle, [reg ex] end"
如何使用regex实现它?
至少,我想捕获| foo bar |
和| reg ex |
,但我的方法是:
/\|.+\|/
捕获| foo bar |,中间,| reg ex |
s.match(/\|.+\|/)[0] # => "|foo bar|, middle, |reg ex|"
尝试使正则表达式不贪婪:
/\|.+?\|/
或
/\|[^|]+\|/
"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"