[英]Regular expression to replace a value in Ruby
我正在嘗試用字符串中的<a href="http://example.com">example.com</a>
替換所有example.com
實例:
content.gsub(/example\.com/, '<a href="http://example.com">example.com</a>')
但是,如果前面有一個點,例如www.example.com
,我不想替換example.com
。 所以我首先想到的是使正則表達式/[^\\.]example.com/
。 但是,當然, gsub!
也會替換example.com
之前的字符。
有沒有一種簡便的方法來替換所有沒有的example.com
.
在前面,在露比?
我會在后面留下負面印象:
content.gsub(/((?<!\.)example.com)/i , '<a href="http://\1">\1</a>')
表示(?<!\\.)
字面意思是“如果前面沒有.
”。
負寬度的斷言是零寬度的斷言,因此它不是匹配項的一部分,因此不會被替換。
請注意,只有Ruby 1.9+支持這些功能
此示例還捕獲了域本身,以便可以在替換中使用它,這使得可以輕松地將其替換為變量,並且使它不區分大小寫(通過以/i
結束表達式)只是因為它更有意義對我來說。
您可以在gsub
使用back reference
:
content.gsub(/(^|[^.])example\.com/, '\\1<a href="http://example.com">example.com</a>')
(^|[^.])
將匹配輸入字符或非點字符的開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.