[CDR 2017-2021] Регулярное выражение перевода строки.

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Добрый день. Пытаюсь найти макросом строку текста с помощью регулярки.
Код:
Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "/>\n\r\s\s<.*\sclass=""print"""

На скрине выделил тот текст, что ищу. Подскажите как указать перевод строки после /> ?
1617972518693.png
 

DukereD

макрософил
Сообщения
458
Реакции
111
Добрый день. Пытаюсь найти макросом строку текста с помощью регулярки.
Код:
Set re = CreateObject("VBScript.RegExp")
  re.Pattern = "/>\n\r\s\s<.*\sclass=""print"""

На скрине выделил тот текст, что ищу. Подскажите как указать перевод строки после /> ?
Посмотреть вложение 142512
а зачем это делать именно в кореле?
да и вообще зачем искать то, что будет удалено.
проще сделать регулярку типа points="(.*)" и уже из массива выбрать нужное
да и в целом можно и без регулярки обойтись. костылями конечно, но тоже будет работать.
просто SPLIT строки несколько раз.
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
а зачем это делать именно в кореле?
да и вообще зачем искать то, что будет удалено.
проще сделать регулярку типа points="(.*)" и уже из массива выбрать нужное
да и в целом можно и без регулярки обойтись. костылями конечно, но тоже будет работать.
просто SPLIT строки несколько раз.
дело в том, что мне нужно найти в тексте именно 2 строку. единственная ее отличительная особенность - ">\ в предидущей строке.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
>\ в предидущей строке.
Так на скриншоте вроде "/> причем, таких строк полно
Сдается мне, вы хотите сделать нечто простое неким чудовищно заденпроходным способом
Опишите задачу полностью
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
Так на скриншоте вроде "/> причем, таких строк полно
Сдается мне, вы хотите сделать нечто простое неким чудовищно заденпроходным способом
Опишите задачу полностью
Читал невнимательно, но осуждаю?) 1.Есть импортированный SVG код 2. в SVG коде встречаются двойные строки с классом "print". Задача : найти вторую строку в этих парах и добавить в них текст (style="fill-opacity: 0.8;") после class="print".

в примере кода лишь два раза встречаются двойные строки. Отличительная особенность от остальных строк

"/>
< тут разный текст class="print"

у меня получается такая регулярка "/>\n\r\s\s<.*\sclass=""print""" , но она перестает срабатывать после добавления /n/r

перепробовал кучу написаний поиска перевода строки, но не срабатывает.

Код:
 <g id="print1">

  <polygon class="print" points="4866,40 5082,40 5082,202 4866,202 "/>
 </g>
 <g id="print2">

  <polygon class="print" points="3785,524 3828,524 3828,1173 3785,1173 "/>
 </g>
 <g id="print3">

  <polygon class="print" points="4945,524 4989,524 4989,1173 4945,1173 "/>
 </g>
 <g id="print4">

  <polygon class="print" points="4913,1629 5021,1629 5021,2169 4913,2169 "/>
 </g>
 <g id="print5">

  <polygon class="print" points="3753,1629 3861,1629 3861,2169 3753,2169 "/>
 </g>
<g id="print6">

  <polygon class="print" points="617,2810 2455,2810 2455,4108 1590,4108 1590,4432 617,4432 "/>
  <polygon class="print" points="1266,3351 1806,3351 1806,3891 1266,3891 "/>
 </g>
 <g id="print7">

  <polygon class="print" points="620,274 2457,274 2457,707 620,707 "/>
  <polygon class="print" points="1268,274 1809,274 1809,707 1268,707 "/>
 </g>
 <g id="print8">

  <polygon class="print" points="2481,879 2102,879 2102,1419 2481,1419 "/>
 </g>
 <g id="print9">

  <polygon class="print" points="596,879 975,879 975,1419 596,1419 "/>
 </g>
</svg>

Обработанный текст должен выглядеть так:
Код:
<g id="print6">



  <polygon class="print" points="617,2810 2455,2810 2455,4108 1590,4108 1590,4432 617,4432 "/>

  <polygon class="print" style="fill-opacity: 0.8;" points="1266,3351 1806,3351 1806,3891 1266,3891 "/>

 </g>
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
надо распарсить XML, добавить атрибут второй ноде, сохранить. подозреваю что с помощью XSLT это должно быть еще более элементарно
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Читал невнимательно, но осуждаю?
Это как раз про вас
А я таки оказался прав в своих подозрениях - многолетняя форумная практика!
Код:
Set objDom = CreateObject("Msxml2.DOMDocument.3.0")     '// Using MSXML 3.0

'/* Load XML */
objDom.LoadXML xmlStr
 
  • Спасибо
Реакции: Skvoznyak

DukereD

макрософил
Сообщения
458
Реакции
111
мне кажется тут и без регекспа сработает.

простая замена по тексту

"""/>" & chr(10) & chr(13) & " <polygon class=""print"" points="""
заменить на
"""/>" & chr(10) & chr(13) & " <polygon class=""print""fill-opacity: 0.8;"" points="""
 

tohaa

Участник
Топикстартер
Сообщения
229
Реакции
8
мне кажется тут и без регекспа сработает.

простая замена по тексту

"""/>" & chr(10) & chr(13) & " <polygon class=""print"" points="""
заменить на
"""/>" & chr(10) & chr(13) & " <polygon class=""print""fill-opacity: 0.8;"" points="""
А как это пишется в коде? Можно пример?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
  • Спасибо
Реакции: DukereD