如何在.bat文件中设置正则表达式?

时间:2014-02-18 14:21:38

标签: regex batch-file replace

我在httpd.conf文件中有这个字符串:

Listen 12.0.0.0:80

我希望用=替换ip地址和分号。

我的批处理命令是:

type C:\h\httpd.conf |repl "Listen (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):" "Listen =" >C:\h\h.conf

结果为Listen =80

但是如果Listen和ip地址之间有几个白色字符,那么如何编写正则表达式?

示例:

Listen                                                                           

        12.0.0.0:80

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解这一点。

您正在尝试用某些内容替换IP地址和端口,并希望将空格作为开始和结束标记。

由于我不确定你到底想要什么,我只想解释一些基本规则:

\d{1,3}

这与说法相同:1 - 3位 例如:123或789或999

正则表达式中的将匹配任何内容!你应该逃避它。

此:     \ d {1,3}。\ d {1,3}。\ d {1,3}。\ d {1,3} 将匹配1-3位数字,后跟任何内容,后跟1-3位数字...
例子:
  999a888b777c666但当然也有IP地址:127.0.0.1

在您的示例中不执行任何操作。你可以删除它们。

如果你想匹配一个空格字符,你可以简单地写一下。

"Listen (\d{1,3}.   \d{1,3}.   \d{1,3}.   \d{1,3})"

只会将IP地址与空格匹配:

127.   0.   0.   1

如果您想让它们成为可选项,请在之后添加 *

"Listen  *(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})"

注意“听”后空格后的“*”,它允许有更多的空格 例如:

Listen       127.0.0.1

如果要将IP地址与端口匹配

"Listen  *(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):\d{1,5}"

如果要再次打印匹配值,通常为\ 1(\ 2,...)

type C:\h\httpd.conf |repl "Listen (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})" "Listen =" >C:\h\h.conf

Listen =

替换 Listen 127.0.0.1:8080
type C:\h\httpd.conf |repl "Listen (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})" "Listen = \1" >C:\h\h.conf

将(可能)用 Listen = 127.0.0.1

替换 Listen 127.0.0.1:8080

希望有所帮助。