第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Javascript RegEx惰性匹配

Javascript RegEx惰性匹配

郎朗坤 2021-05-09 16:39:21
我正在嘗試使用以下正則表達(dá)式方式在JavaScript代碼中查找循環(huán)模式,并替換語法(從:到in),var str="for(var x in []) for(var y in [])";str.replace( new RegExp( '(for\\s*\\(.+\\s+):(\\s+.+\\))', 'ig' ), "\$1in\$2" )IEfor(var x : list){ // something}和for(var x in list){ // something}但是,當(dāng)同一行中有多個(gè)for循環(huán)時(shí),我會(huì)遇到問題。for(var x : list) { for(var y : list) {     // something }}這是有效的語法,但是由于貪婪的正則表達(dá)式方法,其轉(zhuǎn)換如下:for(var x : list) { for(var y in list) {         // something }}我試圖探索懶惰的正則表達(dá)式語法,但無法使其正常工作。我怎樣才能做到這一點(diǎn)?
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以為全部*和添加一些惰性量詞+。并for由于匹配而將其作為替換的一部分。


var str = "for(var x : []) for(var y : [])";


console.log(str.replace(/for\s*?(\(.+?\s+?):(\s+?.+?\))/ig, "for $1in$2"));

短一點(diǎn),它包括for在第一組中。


var str = "for(var x : []) for(var y : [])";


console.log(str.replace(/(for\s*?\(.+?):(.+?\))/ig, "$1in$2"));


查看完整回答
反對(duì) 回復(fù) 2021-05-20
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

除了使用懶惰的量詞,您還可以使用取反的字符集,因?yàn)樗鼈兊男Ч?,并且可以使用此正則表達(dá)式,

(for\s*\([^:]+):([^)]+\))

并替換為

$1 in $2

另外,您不必使用它,.+\\s+因?yàn)檫@是多余的,您可以編寫.+?,甚至可以更好地使用否定字符集,以使其更快地工作,并且類似地:可以在編寫后使用\\s+.+,.+?但是再次使用否定字符類是更好的選擇,就像我提到的那樣在我的回答中。

這可能導(dǎo)致你進(jìn)入問題的另一點(diǎn)是,你不應(yīng)該使用這個(gè)\$1in\$2更換,而是使用$1 in $2首先你不需要逃避$\$,其次,因?yàn)槿绻愕膄or循環(huán)是這樣的,for(var x:list)即不必冒號(hào)和周圍之間的空間變量,那么您可能獲得的替換輸出for(var xinlist)將使其無效。這就是為什么我在回答上述建議,以取代$1 in $2使in在其兩側(cè)的空間。

正則表達(dá)式演示

JS代碼,

const s = `for(var x : list)

{

 // something

}


for(var x : list) { for(var y : list) {

     // something

 }

}`


console.log(s.replace(/(for\s*\([^:]+):([^)]+\))/g, '$1 in $2'))


查看完整回答
反對(duì) 回復(fù) 2021-05-20
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

可以使用“?后”量詞來實(shí)現(xiàn)懶惰行為。

const str = "for(var x : list) { for(var y : list) {"
str.replace( new RegExp( '(for\\s*?\\(.+?\\s+?):(\\s+.+\\))', 'ig' ), "\$1in\$2" )

順便提一句。JavaScript RegEx文字更容易閱讀:

str.replace( /(for\s*?\(.+?\s+?):(\s+.+\))/ig, "\$1in\$2" )


查看完整回答
反對(duì) 回復(fù) 2021-05-20
  • 3 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)