我有一個包含這樣一行HTML文件:複雜的字符串替換
base_url = '',
有時可出現單引號之間沒有任何東西;有時可能會有一個網址。我該如何編寫單行perl命令來填充帶有基本url的字符串?
我嘗試這樣做,但它不工作:
perl -pe 's/(base_url = \')(.+)/https:\/\/www\.example\.com(\',)/eg' -i index.htm
感謝
我有一個包含這樣一行HTML文件:複雜的字符串替換
base_url = '',
有時可出現單引號之間沒有任何東西;有時可能會有一個網址。我該如何編寫單行perl命令來填充帶有基本url的字符串?
我嘗試這樣做,但它不工作:
perl -pe 's/(base_url = \')(.+)/https:\/\/www\.example\.com(\',)/eg' -i index.htm
感謝
你問一個班輪,但沒有說你正在使用的shell。這很重要。我會假設bash。這是一種方式:
perl -p -e 's#(base_url *= *)'"'"'.*'"'"'#$1'"'"'https://www.example.com/'"'"'#'
正如您所看到的,最難的部分是在單引號內轉義單引號。可能有一個更簡單的方法來做到這一點,但我不知道那是什麼。
有些人似乎不喜歡單引號約定中的單引號轉義。我喜歡它,因爲你不必擔心任何進一步的shell逃脫。下面是用雙引號答案:
perl -p -e "s#(base_url *= *)'.*'#\$1'https://www.example.com/'#"
嘗試使用這個正則表達式:?'/ BASE_URL = '([^'] +)'/' –
@IlyaBursov'*'要優於'[^ '] *'(是的,它是'*'不是'+',因爲它可以是零長度的)。 –
@ ChrisJester-Young你是對的 –