![Есть ли способ выполнить поиск и замену обычного текста с помощью регулярных выражений с помощью стандартного программного обеспечения Windows?](https://rvso.com/image/1416376/%D0%95%D1%81%D1%82%D1%8C%20%D0%BB%D0%B8%20%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%20%D0%B8%20%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D1%83%20%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20Windows%3F.png)
КорочеМне нужно разрешить клиенту регулярно запускать поиск и замену с помощью регулярных выражений, которые выглядят следующим образом для многих SVG-файлов размером до 3 МБ:
- Находить:
font-family=".*?"
- Заменить:
font-family="Liberation Sans, Helvetica, Arial, sans-serif"
Легко в большинстве редакторов кода: но проблема в том, что сотрудники, которые будут выполнять этот процесс, будут находиться наочень ограниченная среда- Windows 7 практически без нестандартного программного обеспечения, за исключением Microsoft Office и, возможно, Adobe Illustrator, навиртуальные рабочие столыбез прав администратора. К сожалению, это, похоже, не подлежит обсуждению.
Я пытаюсь убедить руководство сделать исключение и разрешить добавить в свою среду что-то вроде Notepad++, но это не так просто, как кажется (насколько я понимаю, поскольку это виртуализация, установка специального ПО на одну машину означает установку его на серверы, которые используют более 1000 машин, а они очень противятся этому).
Итак, если предположить, что установка специального программного обеспечения невозможна, есть ли способ выполнить простой поиск/замену с помощью регулярных выражений, используя инструменты, поставляемые с Windows или Office?
Я знаю, что Word имеет некоторые возможности поиска/замены регулярных выражений, но не знаю, как остановить его, чтобы он также не портил любой файл кода, к которому прикасается. Есть много других небольших инструментов, поставляемых с Windows: может ли какой-либо из них сделать это? Веб-инструменты также могут работать.
решение1
На самом деле вариантов много..
Этот онлайн-инструмент великолепен -->http://www.regexr.com/
Также вы можете скачать портативную версию NOTEPAD++ и запустить там что угодно.
Удачи!
- похоже на дубликат q - [https://stackoverflow.com/questions/5084351/online-regex-find-and-replace]
решение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
В зависимости от вашего уровня комфорта вы можете либо изменить этот метод для работы с группой файлов, либо написать пакетный файл, который будет вызывать его столько раз, сколько имеется файлов.