ruby on rails - Use Regexp to replace optional match between charaters -
i'm trying replace html entity blank space actual space between occurrences of {{ , }}
example example
"this gap {{ for user in users }}" => "this gap {{ user in users }}" i've found answers similar had led me write (which doesn't work)
.gsub(/(?<=\{\{).*( ?).*(?=\}\})/,' ') any help such regex appreciated thanks!
single phone call gsub using \k , \g
it's bit tricky, in ruby 2.0+, can compact regex \k , \g tokens. utilize regex , replace space:
[^{}]*\k(?:{{|\g).*?\k (?=[^{]*}) see demo.
in ruby:
result = subject.gsub(/[^{}]*\k(?:{{|\g).*?\k (?=[^{]*})/, ' ') explanation
[^{}]* matches chars not braces \k tells engine drop matched (?:{{|\g) either matches opening curlies or asserts positioned after lastly match .*?\k lazily matches chars (and drops them), to... our match! which, lookakead (?=[^{]*}) asserts, must followed chars not opening brace before meeting closing brace ruby-on-rails regex
No comments:
Post a Comment