簡體   English   中英

如何用sed中的新術語替換正則表達式?

[英]How to replace regex pattern with a new term in sed?

我想用一個新術語替換所有以標簽開頭的術語

我正在使用sed但似乎存在語法錯誤

sed 's/#[a-zA-Z0-9]+/replacement/g' terms

我該如何糾正我的語法?

在我的sed版本中, +沒有做任何有用的事情。 你應該使用*代替。

sed支持“基本正則表達式”(BRE),它不提供+作為特殊運算符。

+的正確替換將是

sed 's/#[[:alnum:]]\{1,\}/replacement/g'

要么

sed 's/#[[:alnum:]][[:alnum:]]*/replacement/g'

GNU sed和最近的BSD sed提供“擴展正則表達式”(ERE)匹配:

sed -E 's/#[[:alnum:]]+/replacement/g'

(雖然使用GNU sed你應該使用-r因為-E目前沒有文檔)

他們還提供\\+作為BRE的擴展,

sed 's/#[[:alnum:]]\+/replacement/g' 

如果您需要便攜性,您應該堅持使用常規sedBRE


@ user784637我用[[:alnum:]]代替[a-zA-Z0-9] 例如,這也會使字母與變音符號相匹配。

$ printf "%s\n" ë è é | grep '[a-zA-Z0-9]'
$

$ printf "%s\n" ë è é | grep '[[:alnum:]]'
ë
è
é
$

您可以使用任何適合您需求的..

暫無
暫無

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

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