簡體   English   中英

正則表達式替換Ruby中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM