[问题] 取代引号中的特定字串 (更)

楼主: 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