Regex 已从正则表达式中删除。*已损坏正则表达式
我有以下代码,它确实包含。*但我删除了它们。 这是我更改的行:Regex 已从正则表达式中删除。*已损坏正则表达式,regex,vbscript,batch-file,cmd,Regex,Vbscript,Batch File,Cmd,我有以下代码,它确实包含。*但我删除了它们。 这是我更改的行: >>%vbs% echo regex.pattern="\nName=%~1\n" 这曾经是: >>%vbs% echo regex.pattern="\nName=.*%~1.*\n" 但当单词在变量前面或后面时,它正在搜索行。我只希望它搜索Name=(variable)的精确匹配项。变量是var6 我想解决这个问题的原因是,当它在“Name=”之后搜索var6时,我希望删除通配符。因为我只想找到并更改
>>%vbs% echo regex.pattern="\nName=%~1\n"
这曾经是:
>>%vbs% echo regex.pattern="\nName=.*%~1.*\n"
但当单词在变量前面或后面时,它正在搜索行。我只希望它搜索Name=(variable)的精确匹配项。变量是var6
我想解决这个问题的原因是,当它在“Name=”之后搜索var6时,我希望删除通配符。因为我只想找到并更改“Name=var6”,而不是“Name=(sometext)var6(sometext)”
上面的第一行不起作用,上面的第二行搜索变量前面和后面的通配符,所以这不是我想要的。上面第一行我做错了什么
以下是扩展代码(问题行位于中间):
SETLOCAL ENABLEDELAYEDEXPANSION
查找“!var6!”<“Campaign_SCR2.mis.tmp”>nul&&(
呼叫:替换“!var6!”
调用:stripdup“Campaign_SCR2.mis.tmp.tmp2”“Campaign_SCR2.mis.tmp”“(Class=.*\nType=..*\nOrigin=..*\n ide=.*\n类=.*\nType=.*\nOrigin=.*\nIDE=.'$1”
删除“Campaign_SCR2.mis.tmp.tmp2”
)
)
)
转到环路
后藤:EOF
:替换
设置vbs=“%temp%\%random%.vbs”
如果存在%vbs%goto:替换
>%vbs%echo set regex=新regexp
>>%vbs%echo regex.global=true
>>%vbs%echo regEx.IgnoreCase=False
>>%vbs%echo regex.pattern=“\n名称=%~1\n”
>>%vbs%echo wscript.stdOut.write regex.replace(wscript.stdin.readall,“Name=ShipDummy”+vbCRLF+“Class=ShipDummy”+vbCRLF+“Type=0”+vbCRLF+“Origin=environment”+vbCRLF+“Side=0”+vbCRLF)
cscript/nologo%vbs%“Campaign_SCR2.mis.tmp.tmp2”
删除%vbs%
后藤:EOF
:stripdup
设置vbs=“%temp%\%random%.vbs”
如果存在%vbs%goto:stripdup
>%vbs%echo set regex=新regexp
>>%vbs%echo regex.global=true
>>%vbs%echo regEx.IgnoreCase=False
>>%vbs%echo regex.pattern=“%3”
>>%vbs%echo wscript.stdOut.write regex.replace(wscript.stdin.readall,“%~4”)
cscript/nologo%vbs%“%~2”
删除%vbs%
后藤:EOF
:exitloop4
:循环
我尝试了var6的不同值(在正则表达式中为%%1)。我尝试过带空格和不带空格的值,但运气不佳。怎么样(我只是猜测这是您想要的)
这将在星期五比赛
(Any whitespace)Name=(Any Whitespace)var6(Any Whitespace)
(Anything)(Any whitespace)Name=(Any Whitespace)var6(Any Whitespace)(Anything)
或
这将在星期五比赛
(Any whitespace)Name=(Any Whitespace)var6(Any Whitespace)
(Anything)(Any whitespace)Name=(Any Whitespace)var6(Any Whitespace)(Anything)
注意:顺便说一句,我在脚本中没有看到设置了
var6
的地方!如果从未设置,则它将始终为空字符串。您应该从VBScript中删除该批处理。说真的,你为什么这样对自己?构建一个VBScript来完成实际工作并使所有内容完全不可读实际上是批处理代码的全部功能,因此您也可以使用普通VBScript来完成此操作。这并不能回答问题。这就是为什么我将其作为注释,而不是答案。当然,你可以随心所欲地把自己的生活复杂化。嗨,是的,var6设置在这个脚本上面。
(Anything)(Any whitespace)Name=(Any Whitespace)var6(Any Whitespace)(Anything)