Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите с RegExp (число прочтений - 1985 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Помогите с RegExp
22. Июля 2008 :: 07:29
Печать  
Вроде бы простейшая задача.
Надо заменить имена тэгов. Т.е. если было:

Текст <qwe>содержимое </qwe> продолжение текста

то должно получится:

Текст <МоёИмя>содержимое </МоёИмя> продолжение текста

реально ли это сделать ОДНИМ проходом (одним "Replace-ом")?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с RegExp
Ответ #1 - 22. Июля 2008 :: 07:40
Печать  
Можно, почему нет - делай замену для выражения - qwe> на нужное МоеИмя> и все Улыбка
ИМХО.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с RegExp
Ответ #2 - 22. Июля 2008 :: 07:42
Печать  
Код
Выбрать все
RegExp = CreateObject("VBScript.RegExp");
RegExp.IgnoreCase = -1;
RegExp.Global = -1;
RegExp.Pattern = "(<|</)qwe(>)";
Message(RegExp.Replace("Текст <qwe>содержимое </qwe> продолжение текста", "$1МоёИмя$2")); 


Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с RegExp
Ответ #3 - 22. Июля 2008 :: 07:45
Печать  
Спасибо, Иван, то что надо!  Улыбка
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с RegExp
Ответ #4 - 22. Июля 2008 :: 07:48
Печать  
А ещё вопрос в догонку:
можно ли на "вход" подавать файл, а не строку?
Или по-любому надо сначала открыть файл, запихать всё его содержимое в строку, а потом парсить?
Если да, то как лучше сделать? Встроенными ОдинЭсными методами или же как-нить так:
Код
Выбрать все
ФСО=СоздатьОбъект("Scripting.FileSystemObject");
Файл=ФСО.GetFile(ПутьКФайлу);
Поток=Файл.OpenAsTextStream(1);
Сообщить(RegExp.Replace(Поток.ReadAll(), "$1МоёИмя$2")); 

?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с RegExp
Ответ #5 - 22. Июля 2008 :: 08:20
Печать  
Да, файл придется открыть и прочитать текст.
Получать строку из файла намного лучше, конечно, через VBScript, чем через 1С.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать