Regex with replace in Golang

后端 未结 1 1746
醉话见心
醉话见心 2020-12-05 09:42

I\'ve used regexp package to replace bellow text

{% macro products_list(products) %}
{% for product in products %}
productsList
{% endfor %}
{% endmacro %}
         


        
相关标签:
1条回答
  • 2020-12-05 10:10

    You can use capturing groups with alternations matching either string boundaries or a character not _ (still using a word boundary):

    var re = regexp.MustCompile(`(^|[^_])\bproducts\b([^_]|$)`)
    s := re.ReplaceAllString(sample, `$1.$2`)
    

    Here is the Go demo and a regex demo.

    Notes on the pattern:

    • (^|[^_]) - match string start (^) or a character other than _
    • \bproducts\b - a whole word "products"
    • ([^_]|$) - either a non-_ or the end of string.

    In the replacement pattern, we use backreferences to restore the characters captured with the parentheses (capturing groups).

    0 讨论(0)
提交回复
热议问题