使用findstr从文本中获取匹配的字符串

时间:2010-10-14 14:27:14

标签: windows regex pattern-matching

我在某个文件中有一个文本,如

<Variable name="URL"  value="http://url:port"/>

我想在值标记(http://url:port)中使用网址。

我正在使用的命令和正则表达式是

FindStr /R /C:"\"URL\" *value=*\"*\"" <filename>

上述正则表达式与文件中的行匹配,但无法提取该url字符串

任何建议?

1 个答案:

答案 0 :(得分:1)

findstr不会为您捕获任何值。如果您可以下载工具,可以尝试gawk for windows

C:\test>gawk "/value/{ gsub(/.*value=\042|\042.*/,\"\");print }" file
http://url:port

如果没有,您可以使用vbscript

strFile= WScript.Arguments(0)
Set objFS = CreateObject( "Scripting.FileSystemObject" )
Set d = CreateObject("Scripting.Dictionary")
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfStream
    strLine=objFile.ReadLine    
    If InStr(strLine,"value=") > 0 Then
        s=Split(strLine,"value=")       
        s1=Replace(s(1),"/>","")
        WScript.Echo s1
    End If
Loop

用法:

C:\test>cscript //nologo test.vbs file
"http://url:port"