有沒有辦法用標準 Windows 軟體進行純文字正規表示式尋找和取代?

有沒有辦法用標準 Windows 軟體進行純文字正規表示式尋找和取代?

長話短說,我需要使客戶端能夠定期運行正則表達式查找和替換,在許多大小高達 3mbs 的 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 附帶了許多其他小工具:它們中的任何一個都可以做到這一點嗎?網路為基礎的工具也可以發揮作用。

答案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

根據您的舒適程度,您可以修改它以處理一組文件,也可以編寫一個批次文件來呼叫它與文件數量一樣多的次數。

相關內容