正則表達(dá)式替換字符串并保留其中部分任意內(nèi)容(最新推薦)
如何用正則表達(dá)式替換字符串并保留其中部分任意內(nèi)容
我們都知道可以用正則表達(dá)式,即regex,來(lái)進(jìn)行字符串的匹配,替換。
但是如果我們想替換字符串中的一部分內(nèi)容,但是要同時(shí)保留字符串中的另一部分內(nèi)容,無(wú)論它是什么,該怎么做呢?
如在某文件中有如下內(nèi)容:
defined($opt_ws_parser) defined($opt_client) defined($opt_server) ...
如何替換成:
$opt_ws_parser $opt_client $opt_server
也就是,把defined()去掉,但是保留()里的內(nèi)容。
直接出答案:
/defined(\(\$.*\))/\1
其中,前面一個(gè)/ /中的正則表達(dá)式是原始字符串,這里面,
- defined( - 原始字符串
- \( -表示要組成一個(gè)group,前面需要有\(zhòng)來(lái)escape
- \$ -表示字符$,前面需要\來(lái)escape
- .* - .表示任意字符,*表示0或任意次重復(fù)
- \) - 這里是group的右括號(hào),前面需要有\(zhòng)來(lái)escape
- ) -原始字符串中的右括號(hào)
后面的\1是要替換成的字符串,這里表示為第一個(gè)group,也就是\(\$.*\)中的內(nèi)容。
在Linux的vim里,在底部輸入:
:%s/defined(\(\$.*\))/\1
這里%表示適用于文件每一行,s是substitute的意思。
在shell里,可以用如下sed命令:
sed -i 's/defined(\(\$.*\))/\1/g' filename
這里最后一個(gè)g是表示替換所有符合前面正則規(guī)則的字符串。
補(bǔ)充:使用正則表達(dá)式替換(保留部分內(nèi)容不變)
正則表達(dá)式保留部分內(nèi)容替換
需求:
把trim(ABC)替換成trim(replace(ABC,char(9),' ')
需要把ABC
保留不變,替換其它的。
實(shí)現(xiàn):
trim\(([^).]*)\) 替換成 trim\(replace\($1,char\(9\),' '\)
在查找的時(shí)候用括號(hào)括起來(lái)的代表一部分,在替換的時(shí)候可以用$1,$2…引用。
簡(jiǎn)單例子
把前面三位數(shù)字替換成 =
,保留其它不變。[0-9]{3}
表示三位數(shù)字,(.*)
表示其它,用括號(hào)括起便于后面替換時(shí)引用。
替換完結(jié)果是 ===yiersan
除了前面 123 后面的都被括號(hào)括起來(lái)了,而且后面用 $1 引用,所以保留不變。
注意:
有些編輯器選擇使用正則表達(dá)式的時(shí)候有選擇正則表達(dá)式的類型。這里是Perl
到此這篇關(guān)于如何用正則表達(dá)式替換字符串并保留其中部分任意內(nèi)容的文章就介紹到這了,更多相關(guān)正則表達(dá)式替換字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript正則表達(dá)式校驗(yàn)非零的正整數(shù)實(shí)例
本文分享了JavaScript正則表達(dá)式(^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$)校驗(yàn)非零的正整數(shù)實(shí)例代碼,代碼簡(jiǎn)單易懂,需要的朋友可以看下2016-12-12自動(dòng)檢測(cè)數(shù)字替換非數(shù)字的正則表達(dá)式
這篇文章主要介紹了自動(dòng)檢測(cè)數(shù)字替換非數(shù)字的正則表達(dá)式 ,需要的朋友可以參考下2016-05-05經(jīng)典JavaScript正則表達(dá)式實(shí)戰(zhàn)(附pdf)
本文不是使用Dreamweaver編輯,以下測(cè)試代碼可能已經(jīng)在賦值粘貼的過(guò)程做了一些調(diào)整,可能執(zhí)行失效??梢詤⒖?/div> 2012-06-06正則基礎(chǔ)之 環(huán)視 Lookaround
環(huán)視只進(jìn)行子表達(dá)式的匹配,不占有字符,匹配到的內(nèi)容不保存到最終的匹配結(jié)果,是零寬度的。環(huán)視匹配的最終結(jié)果就是一個(gè)位置。2009-07-07一串字字符中多個(gè)逗號(hào)替換為一個(gè) 既標(biāo)準(zhǔn)分隔符(正則表達(dá)式)
一串字字符中多個(gè)逗號(hào)轉(zhuǎn)換為一個(gè),既標(biāo)準(zhǔn)分隔符(正則表達(dá)式),借助上一篇文章正則表達(dá)式快速入門,來(lái)完成了這個(gè)轉(zhuǎn)換過(guò)程2012-11-11最新評(píng)論