簡體   English   中英

在正則表達式中使用變量

[英]Using a variable in a regular expression

我正在使用一些sub(), gsub()函數來替換存儲在變量中的內容。

比如說:

$ awk 'BEGIN {str="hello bee"; patt="llo"; gsub(patt,"XX",str); print str}'
heXX bee

這將替換str包含的所有lloXX的字符串。 尼斯。

現在說我想使用一個使用變量和模式的更復雜的正則表達式。 例如, "he" +變量patt 我該怎么做?

如果我嘗試gsub(/he/patt, ...)它不起作用:

awk 'BEGIN {str="hello bee"; patt="llo"; gsub(/he/patt,"XX",str); print str}'

返回

hello bee

代替

XX bee

那時你需要字符串連接,因此必須使用字符串分隔符而不是regexp的regexp分隔符:

$ awk 'BEGIN {str="hello bee"; patt="llo"; gsub("he"patt,"XX",str); print str}'
XX bee

請注意,您需要將任何轉義字符加倍,因為awk必須首先將字符串轉換為正則表達式,這樣才能使用其中一個轉義字符。

你可以做:

awk 'BEGIN {str="hello bee"; patt="llo"; gsub("he" patt,"XX",str); print str}'
XX bee

/he/patt沒有把字符串連在一起,但"he" patt確實如此。

這會奏效

awk 'BEGIN {str="hello bee"; patt="llo"; gsub(patt,"XX",str); print str}'
heXX bee

基本上你必須將完整模式定義為變量,而不是它的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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