3 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
簡(jiǎn)而言之:你不能。匹配始終是連續(xù)的,即使它包含零寬度的斷言,如果要轉(zhuǎn)到下一個(gè)字符,也就無(wú)法匹配下一個(gè)字符。

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的斷言,如果沒(méi)有分組再加上它,就不可能做到這一點(diǎn)是正確的。
您也可以像Jeff-Hillman一樣,只在事發(fā)之后剔除壞角色。
這里要注意的重要一點(diǎn)是,您“不要對(duì)所有內(nèi)容都使用正則表達(dá)式”。
正則表達(dá)式是為不太復(fù)雜的問(wèn)題而設(shè)計(jì)的,用于不太復(fù)雜的解決方案,您不應(yīng)該對(duì)所有內(nèi)容都使用“哦,我們將使用正則表達(dá)式”,并且您不應(yīng)習(xí)慣于認(rèn)為自己可以通過(guò)簡(jiǎn)單的方法解決問(wèn)題。一步式正則表達(dá)式。
當(dāng)存在可行的可行方法時(shí),請(qǐng)務(wù)必使用它。
如果您恰巧需要在代碼體中返回多個(gè)匹配項(xiàng),則可以使用另一種想法,即尋找基于語(yǔ)言“回調(diào)”的正則表達(dá)式,該表達(dá)式允許將任何匹配/找到的組傳遞給可以進(jìn)行內(nèi)聯(lián)替換的函數(shù)調(diào)用。(在執(zhí)行regexp時(shí)特別方便)。
不知道它如何在.Net中工作,但是在php中您會(huì)做類(lèi)似的事情(不是精確的代碼)
function strip_reverse( $a )
{
$a = preg_replace("/-/", "", $a );
return reverse($a);
}
$b = preg_replace_callback( "/(AB[-]?cde)/" , 'strip_reverse' , "Hello World AB-cde" ;
- 3 回答
- 0 關(guān)注
- 1117 瀏覽
添加回答
舉報(bào)