有没有办法用标准 Windows 软件进行纯文本正则表达式查找和替换?

有没有办法用标准 Windows 软件进行纯文本正则表达式查找和替换?

长话短说例如,我需要让客户端定期运行正则表达式查找和替换,在许多大小不超过 3mb 的 SVG 文件上执行如下操作:

  • 寻找:font-family=".*?"
  • 用。。。来代替:font-family="Liberation Sans, Helvetica, Arial, sans-serif"

在大多数代码编辑器中都很容易:但问题是,执行此过程的员工将处于非常受限的环境- Windows 7 基本上没有非标准软件,除了 Microsoft Office 和可能的 Adob​​e Illustrator。虚拟桌面没有管理员权限。不幸的是,这似乎是没有商量余地的。

我试图让管理层做出例外并允许将 Notepad ++ 之类的东西添加到他们的环境中 - 但这并不像听起来那么简单(据我了解,因为它是虚拟化的,安装定制软件到一台机器意味着将其安装到 1,000 多台机器使用的服务器上,而他们非常不愿意这样做)。

因此假设无法安装自定义软件,有没有办法使用 Windows 或 Office 附带的工具进行简单的正则表达式查找/替换?

我知道 Word 有一些正则表达式查找/替换功能,但不知道有什么方法可以阻止它弄乱它接触的任何代码文件。Windows 附带了许多其他小工具:它们中的任何一个都可以做到这一点吗?基于 Web 的工具也可以工作。

答案1

实际上有很多选择。

这个在线工具很棒 -->http://www.regexr.com/

另外,您可以下载 NOTEPAD++ 便携版本并在那里运行任何内容。

祝你好运!

答案2

它们能运行 VBScript 吗?如果可以,那么以下 (快速拼凑起来的) VBScript 就可以运行:

Option Explicit
If WScript.Arguments.Count <> 2 Then
    WScript.Echo "Usage: " & WScript.ScriptName & " <input> <output>"
    WScript.Quit
End If
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(WScript.Arguments.Item(0)) = False Then
    WScript.Echo "Error: `" & WScript.Arguments.Item(0) & "` does not exist."
    WScript.Quit
End If
Dim oFile : Set oFile = fso.OpenTextFile(WScript.Arguments.Item(0))
Dim sContents : sContents = oFile.ReadAll : oFile.Close
Dim re : Set re = New Regexp
re.IgnoreCase = True : re.Global = True : re.Pattern = "font-family=\"".*?\"""
sContents = re.Replace(sContents, "font-family=""Liberation Sans, Helvetica, Arial, sans-serif""")
Set oFile = fso.CreateTextFile(WScript.Arguments.Item(1), True)
oFile.Write sContents
oFile.Close
Set re = Nothing
Set oFile = Nothing
Set fso = Nothing

将其保存为某些内容(例如convert.vbs),然后使用以下命令行运行它:

cscript convert.vbs <input file> <output file>

如果要用修改内容覆盖原始内容,只需输入两次文件名,例如:

cscript convert.vbs diagram.svg diagram.svg

根据您的舒适程度,您可以修改它以处理一组文件,或者编写一个批处理文件,按文件数量多次调用它。

相关内容