亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于選擇具有特定開始和結束字符串的文本的正則表達式,并且還排除特定單詞

用于選擇具有特定開始和結束字符串的文本的正則表達式,并且還排除特定單詞

慕娘9325324 2023-11-11 21:44:31
假設我有以下字符串:const { user } = props;const { task } = state;const { words } = response;const { plays } = result;我想選擇的字符串以“const {”開頭以“;”結尾但不包含“props”或“state”等詞我達到了這個地步(?<=const\s)(.*)(?=;)這可以幫助我選擇所需開始/結束內的內容。但我無法弄清楚如何排除那些旨在排除的詞。我怎樣才能得到// Expected output 1user } = responseuser } = result此外,我怎樣才能得到// Expected output 2const { user } = response;const { user } = result;我打算使用 NodeJS/javascript 在文件上運行類似的正則表達式模式。
查看完整描述

1 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

您當前的模式與空白(?<=const\s)(.*)(?=;)之間的任何零個或多個字符匹配,直到同一行中最右邊的出現為止。您想要做的是跳過字符串之間的部分,這是使用正則表達式不可能實現的。在這些情況下,您應該始終考慮解決方法。也就是說,您可以在模式中使用捕獲組進行替換,并在替換中使用反向引用(如果您需要獲得單個匹配項),或者完全更改整個邏輯(當您需要多個匹配項時,就像這里一樣)。const;


在這種情況下,您可以提取當前匹配的所有字符串,確保匹配行上沒有您不希望出現的單詞,然后將大括號之間的所有字符串替換為該字符串(從所需的輸出中推導出來{ user }) )。


然后你可以使用類似的東西


const text = "const { user } = props;\nconst { task } = state;\nconst { words } = response;\nconst { plays } = result;"

console.log(

    text.match(/const\s(?!.*\b(?:props|state)\b).*;/g).map(x => x.replace(/{[^{}]*}/, '{ user }'))

)

輸出:


[

  "const { user } = response;",

  "const { user } = result;"

]


查看完整回答
反對 回復 2023-11-11
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號