[問題] 取代引號中的特定字串 (更)

作者: hunandy14 (Charlott.HonG)   2021-10-06 08:56:43
/* 聽說註明使用的語言、環境
* 問題有可能較容易被解決...
*/
環境是用 POWERSHELL 跑
文本是整份檔案,這邊擷取一部分作範例
文檔.js
if ( a || b) {
var SQL = "select abc || abc";
}
目的是把整份檔案的 || 改成 + 但是直接修的話連 IF 的判斷也會動到
所以需要判斷只修引號內的字串
想要的結果
if ( a || b) {
var SQL = "select abc || abc";
}
目前查到的只能把引號內容抓出來,不知道怎麼進一步塞選出字串||
$ct -replace '(?<=").*?(?=")', '+'
作者: Tabrith (血糖瑪琪朵)   2021-10-08 00:25:00
powershell不能用||吧?還是新版可以了我不確定。再把if換回來 哈哈哈想到一個方法是你先把if(a||b)換成別的字串,然後換||,再把if換回來 哈哈哈 (上面漏推第二行直接跳到第三行了(沒看到是.js文檔 第一行是我會錯意了)
作者: LPH66 (-6.2598534e+18f)   2021-10-08 13:03:00
一般來說這會需要抓「在字串裡的 ||」然後用 backref 代換不過我不太確定 powershell 能不能做到這種代換...
作者: art1 (人,原來不是人)   2021-10-10 16:21:00
'(?<=").*?\|\|.*?(?=")' 試看看'(?<=").*?(\|\|).*?(?=")' 忘了要替換了 XD
作者: cutekid (可愛小孩子)   2021-10-10 21:09:00
作者: art1 (人,原來不是人)   2021-10-10 22:41:00
若有類似樓上的例子,左邊 .*? 要改成排除左括號 [^(]*?右邊 .*? 排除右括號 [^)]*? 看看
作者: asglay (收收收尾)   2021-10-13 21:30:00
引號中的||編到有命名的group裡面 就可以存取該group
作者: art1 (人,原來不是人)   2021-10-23 09:08:00
如果是要替換 sql 引號內的||,那不如直接寫 sql = 較明確sql=".+?(\|\|).+?(\|\|).+?" 這句可以針對你給的那個新例子

Links booklink

Contact Us: admin [ a t ] ucptt.com