首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找并替换为正则表达式(Batch .BAT)

查找并替换为正则表达式(Batch .BAT)
EN

Stack Overflow用户
提问于 2012-05-29 00:34:08
回答 2查看 6.3K关注 0票数 2

我想在几个文本文件中进行查找/替换。如何使用.BAT自动执行此操作?(我还需要正则表达式)

示例:查找:

代码语言:javascript
代码运行次数:0
运行
复制
<ObjectList ObjectType="MyObject">
(anything here)
</ObjectList>

然后删除该文本,并替换为:

代码语言:javascript
代码运行次数:0
运行
复制
<ObjectList ObjectType="MyNewObject">
Blablabla
Blablabla
</ObjectList>

如何使用.BAT脚本做到这一点?

编辑:我有很多文件要查找/替换,其中一些不是XML。所以我需要一个通用的解决方案。最简单的方法是什么(我不想安装第三方软件)。VBS还是BATCH?如果有人有一个非常小的示例代码,非常感谢提前!谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-05-29 04:41:55

通过VBScript的VBScript.RegExp类使用正则表达式。

例如:

代码语言:javascript
代码运行次数:0
运行
复制
@ECHO OFF
(
    ECHO Set Regex = CreateObject^("VBScript.RegExp"^)
    ECHO Regex.Pattern = "[E-G]$"
    ECHO MsgBox^(Regex.Replace^("A B C D E", "X"^)^)
) > Regex.vbs
CSCRIPT //NOLOGO Regex.vbs
DEL Regex.vbs
PAUSE > NUL

上面的代码将显示消息"A B C D X“。

我希望我能帮上忙。

票数 4
EN

Stack Overflow用户

发布于 2012-05-29 00:36:47

因为您正在操作XML,所以我将使用特定于XML的东西来维护编码、实体等。

查看基于命令行的XMLStarlet工具集,特别是允许编辑文档的ed命令。

代码语言:javascript
代码运行次数:0
运行
复制
xml ed --help
XMLStarlet Toolkit: Edit XML document(s)
Usage: xml ed <global-options> {<action>} [ <xml-file-or-uri> ... ]
where
  <global-options>  - global options for editing
  <xml-file-or-uri> - input XML document file name/uri (stdin is used if missing)

<global-options> are:
  -P (or --pf)        - preserve original formatting
  -S (or --ps)        - preserve non-significant spaces
  -O (or --omit-decl) - omit XML declaration (<?xml ...?>)
  -N <name>=<value>   - predefine namespaces (name without 'xmlns:')
                        ex: xsql=urn:oracle-xsql
                        Multiple -N options are allowed.
                        -N options must be last global options.
  --help or -h        - display help

where <action>
   -d or --delete <xpath>
   -i or --insert <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value>
   -a or --append <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value>
   -s or --subnode <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value>
   -m or --move <xpath1> <xpath2>
   -r or --rename <xpath1> -v <new-name>
   -u or --update <xpath> -v (--value) <value>
              -x (--expr) <xpath> (-x is not implemented yet)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10787831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档