Batch:如何存储正则表达式搜索过程中遇到的值&;amp;替换(Repl.bat) [英] Batch: How to store values encountered during a regular expression search & replace (repl.bat)
本文介绍了Batch:如何存储正则表达式搜索过程中遇到的值&;amp;替换(Repl.bat)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直在使用@dbenham(original REPL.BAT post和earliest StackOverflow post)创建的REPL.BAT。以下是该方案的一个示例。
我在文档中搜索以下代码的出现:
driver.find_element_by_id("username").send_keys("rwbyrd")
driver.find_element_by_id("password").send_keys("password")
并替换为...
login("rwbyrd","password")
使用以下批处理代码:
type %filename% | repl "sdriver.find_element_by_id(x22usernamex22).send_keys(x22rwbyrdx22)s*driver.find_element_by_id(x22passwordx22).send_keys(x22passwordx22)" "login(x22rwbyrdx22,x22passwordx22)" MX >%filename%.new
注意:x22=表示双引号的十六进制
我正在寻找一种方法来存储我要搜索的代码中的[Username]‘rwbyrd’和[Password]‘Password’值,并在进行替换时使用这些值。我希望在REPL.BAT命令中找到一种方法来实现这一点,但我将采用我能得到的:)。有人知道如何做到这一点吗?提前感谢!推荐答案
如果您尚未执行此操作,强烈建议您从命令提示符执行以下命令:
获取特定于REPL.BAT的帮助:
repl /?
获取有关REPL.BAT使用的JScript正则表达式的帮助(在Web浏览器中打开Microsoft文档)
repl /?regex
获取有关替换子匹配功能的帮助-您要查找的"变量"(在Web浏览器中打开Microsoft文档)
repl /?replace
我在您的搜索正则表达式中将前导s
替换为(单词边界)。我还使用未转义的圆括号来捕获用户名和密码值,以便在替换字符串中使用它们。
.*?
匹配括号文字中的内容(非贪婪匹配)。一项表面上的更改是使用q
而不是x22
。
type %filename% | repl "driver.find_element_by_id(qusernameq).send_keys((.*?))s*driver.find_element_by_id(qpasswordq).send_keys((.*?))" "login($1,$2)" MX >%filename%.new
更新
根据OP的评论和Aacini的回答,我已更新REPL.BAT以接受J选项,以将替换值指定为JScript表达式。
以下示例将用户名转换为大写:
type %filename% | repl "driver.find_element_by_id(qusernameq).send_keys((.*?))s*driver.find_element_by_id(qpasswordq).send_keys((.*?))" "'login('+$[1].toUpperCase()+','+$[2]+')'" MXJ >%filename%.new
有关详细信息和示例,请参阅http://www.dostips.com/forum/viewtopic.php?p=37855#p37855。
这篇关于Batch:如何存储正则表达式搜索过程中遇到的值&;amp;替换(Repl.bat)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文