|
регулярные выражения regexp | ☑ | ||
---|---|---|---|---|
0
mikaelangelm
24.04.19
✎
18:59
|
Добрый вечер. Помогите пожалуйста описать при помощи регулярных выражений (работаю в notepad++) строку вида
<Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">[вот здесь может быть 1 перенос строки + табуляция (несколько) + пробелы (несколько) или может не быть вообще ничего]<Значение> |
|||
1
mikaelangelm
24.04.19
✎
19:02
|
Выражение в квадратных скобках [] пытался заменить следующим образом:
.* .*\n.* ^.*[вот тут статический текст]$.*[вот тут статический текст] не помогает (запускаю поиск по вышеуказанным выражениям, знаю что в тексте таких элементов 195, но находится 0) |
|||
2
Fram
24.04.19
✎
19:07
|
Откуда переносы строки и табуляции в значении ставки ндс? побольше кусок (пример) можно увидеть?
|
|||
3
Garykom
гуру
24.04.19
✎
19:14
|
Насколько надо быть боль...альтернативно мыслящим чтобы вместо парсера разбирать XML регулярками?
|
|||
4
Fram
24.04.19
✎
19:15
|
(3) он похоже не сам XML, а значения узлов пытается регулярками разобрать
|
|||
5
Garykom
гуру
24.04.19
✎
19:17
|
(4) "вот здесь может быть 1 перенос строки + табуляция (несколько) + пробелы (несколько) или может не быть вообще ничего"
чего он там пытается? |
|||
6
mikaelangelm
24.04.19
✎
19:18
|
(2)(3) Спасибо что откликнулись. Есть необходимость отыскать (и впоследствии заменить именно в файле) такие элементы текста, у которых за открывающим тегом Свойство с параметром Имя = "СтавкаНДС" следует открывающий тег Значение
<Ссылка Нпп="2"> <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка"> <Значение>0e550a6b-f245-11df-ba52-0015f2de568d</Значение> </Свойство> <Свойство Имя="Код" Тип="Строка"> <Значение>796 </Значение> </Свойство> </Ссылка> </Свойство><Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> <Значение>НДС20</Значение> </Свойство> <Свойство Имя="Комментарий" Тип="Строка"> <Пусто/> </Свойство> |
|||
7
Garykom
гуру
24.04.19
✎
19:19
|
А RegExp то в этой задачке нафуя?
|
|||
8
Fram
24.04.19
✎
19:19
|
беру свои слова обратно. +1 к (3)
|
|||
9
Garykom
гуру
24.04.19
✎
19:20
|
Тебе надо НДС18 поменять на НДС20 ? или наоборот?
|
|||
10
mikaelangelm
24.04.19
✎
19:23
|
(7) работаю с файлом xml в notepad++, решил что иных способов удобнее и быстрее нет
менять значения НДС не нужно, необходимо изменить параметр Имя="СтавкаНДС" на Имя="УдалитьСтавкаНДС", но заменять нужно не все, что содержит "СтавкаНДС", а именно удовлетворяющее условию, указанному выше |
|||
11
mikaelangelm
24.04.19
✎
19:23
|
(9) Правильно ли я понимаю, что с помощью notepad++, или любого другого текстового редактора, делать это смысла не имеет
|
|||
12
Garykom
гуру
24.04.19
✎
19:25
|
||||
13
Fram
24.04.19
✎
19:25
|
(10) под "условию, указанному выше" что имеется ввиду?
|
|||
14
Garykom
гуру
24.04.19
✎
19:26
|
(12)+ Pretty Print по идее должно привести XML к стандартному виду убрав все лишнее типа "[вот здесь может быть 1 перенос строки + табуляция (несколько) + пробелы (несколько) или может не быть вообще ничего]"
|
|||
15
mikaelangelm
24.04.19
✎
19:28
|
(12) Прекрасная утилита, пользуюсь. Не нашел как с ее помощью решить мою задачу
(13) Имею ввиду, что хотел бы найти строки, содержащие следующее: <Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">[далее указанный в шапке набор символов]<Значение> (14) Пытался найти строку по шаблонам после использования Pretty print, но к сожалению неудачно |
|||
16
Fram
24.04.19
✎
19:28
|
(10) 195 вхождений вполне можно обработать и по одному. давно бы уже прошелся
|
|||
17
mikaelangelm
24.04.19
✎
19:29
|
(16) есть 2 файла. Тот, в котором 195 - тестовый. Предстоит также обработать и второй, в котором 1500
|
|||
18
Fram
24.04.19
✎
19:29
|
(15) все равно не понимаю фразу "[далее указанный в шапке набор символов]".. что там может быть кроме ставки НДС?
|
|||
19
Fram
24.04.19
✎
19:30
|
(15) приведи пример того что не должно быть заменено, и того что должно
|
|||
20
Garykom
гуру
24.04.19
✎
19:30
|
(18) Реквизит переименован из "СтавкаНДС" в "УдалитьСтавкаНДС" обмен упал ибо правила больше не подходят
|
|||
21
Garykom
гуру
24.04.19
✎
19:31
|
И вот вместо правки правил хотят файлы обмена исправить
|
|||
22
mikaelangelm
24.04.19
✎
19:32
|
(20) Все верно, но задачу я попытался максимально упростить исходя из условий что хотелось бы догрузить файлы сегодня, а завтра - заняться исправлением ПКО
(19) Вот как сейчас в 195 местах <Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> <Значение>НДС20</Значение> </Свойство> Вот как хотелось бы чтобы было в 195 местах <Свойство Имя="УдалитьСтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> <Значение>НДС20</Значение> </Свойство> |
|||
23
Fram
24.04.19
✎
19:33
|
(22) так почему тупая замена всей фразы (строки) не подходит?
|
|||
24
Garykom
гуру
24.04.19
✎
19:33
|
(22) Переименуй в конфе реквизиты назад, выполни обмен и вперед править правила
|
|||
25
Garykom
гуру
24.04.19
✎
19:34
|
(23) Разные символы внутри "всей строки" могут быть пробелы, табуляции и переносы строк
|
|||
26
Fram
24.04.19
✎
19:35
|
(23) откуда во фразе <Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> могут взяться разные символы?
|
|||
27
Garykom
гуру
24.04.19
✎
19:35
|
<Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> //тут перенос строки
<Значение>НДС20</Значение> //тут в начале хз сколько пробелов и табов |
|||
28
Garykom
гуру
24.04.19
✎
19:36
|
(26) Не все строки надо <Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС">
Там есть которые не надо переименовывать. Только если дальше "НДС20" |
|||
29
Fram
24.04.19
✎
19:36
|
Еще раз.. почему нельзя все вхождения строки
<Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> заменить на <Свойство Имя="УдалитьСтавкаНДС" Тип="ПеречислениеСсылка.СтавкиНДС"> ??? |
|||
30
mikaelangelm
24.04.19
✎
19:37
|
(23) Строк несколько, и notepad++ позволяет мне найти значение размером в несколько строк, но значение "заменить на" не позволяет указать шириной в несколько строк
(24) Это было бы последним в списке (25) Верно, там разные символы, поэтому тоже (23) не подойдет (26) Разные символы не в указанной вами строке, а именно между ней и тегом <Значение> |
|||
31
Garykom
гуру
24.04.19
✎
19:38
|
(29) Две строки надо искать, точнее подстроку где шаблон1+любые символы (CR таб пробел)+шаблон2
И заменить на шаблон1+любые символы (CR таб пробел)+шаблон3 |
|||
32
Garykom
гуру
24.04.19
✎
19:39
|
(29) Лишнее заменит что не надо менять такой простой поиск и замена
|
|||
33
Garykom
гуру
24.04.19
✎
19:41
|
Я бы все же (24) точнее завел бы новый реквизит "СтавкаНДС" чтобы были оба с "УдалитьСтавкаНДС"
|
|||
34
Garykom
гуру
24.04.19
✎
19:42
|
Но если конфа базовая то жопа да. Особенно если их много этих базовых разных конф.
|
|||
35
mikaelangelm
24.04.19
✎
19:43
|
(27) Да, и я пытаюсь описать //тут перенос строки посредством regExp, но не выходит (очевидно либо там какой то другой перенос, либо не только перенос). При этом "НДС20</Значение>" даже не нужно искать, достаточно остановиться на открывающем теге <Значение>
(28) На самом деле не в этом принцип. Без разницы какое там значение НДС, главное - что Значение есть. ПОтому что кое где значений нет (например табличная часть документа; там как то по другому называется) и там реквизит ТЧ СтавкаНДС переименовывать никак нельзя (29) Потому что такие строки необходимо менять только для родительских узлов типа "Номенклатура". Но точно такие же вхождения есть в узлах "Реализация", и там их менять никак нельзя (31) Верно, но не понимаю как описать корректно Любые символы (CR таб пробел) пытаюсь но не выходит (33) Принимается, ПРОФ, но так не хочется.. |
|||
36
Fram
24.04.19
✎
19:45
|
||||
37
Fram
24.04.19
✎
19:49
|
устроит?
|
|||
38
Fram
24.04.19
✎
19:49
|
хотя я так и не понял по какому принципу ты определяешь где надо заменять, а где не надо
|
|||
39
Fram
24.04.19
✎
19:51
|
(36) при замене на пробелы и переносе строки можно забить. XML парсеру пофиг на них
|
|||
40
Fram
24.04.19
✎
19:53
|
(38) снимается после прочтения (35) :)
|
|||
41
Garykom
гуру
24.04.19
✎
19:55
|
(36) Может зацепить лишнее, надо бы прописать какие могут быть символы внутри
[^]* слишком многое подходит |
|||
42
Garykom
гуру
24.04.19
✎
19:57
|
[\r\n\s\t]*
|
|||
43
Fram
24.04.19
✎
19:57
|
[ \n\r]*
|
|||
44
Garykom
гуру
24.04.19
✎
19:57
|
(43) пробел и таб ?
|
|||
45
Fram
24.04.19
✎
19:58
|
(44) пробел - первый символ. а табуляции в выгрузке не может быть
|
|||
46
mikaelangelm
24.04.19
✎
20:01
|
(36) Умом понимаю что должно быть Ок, но мой ноутпад другого мнения ) https://a.radikal.ru/a25/1904/42/09176326fdec.png Воспользуюсь этим сервисом, спасибо
(40) Рад что смог быть понятым ) (41)(42) Если зацепит лишнее, сразу пойму по количеству. Благодарю Итого, пробую, в надежде что что то точно подойдет [^]* [\r\n\s\t]* [ \n\r]* |
|||
47
Fram
24.04.19
✎
20:03
|
(45) хмм.. оказывается может. давно я в этом гов.. не ковырялся ))
|
|||
48
Tonik992
24.04.19
✎
20:05
|
Можно так:
<Свойство Имя="СтавкаНДС" Тип="ПеречислениеСсылка\.СтавкиНДС">.+?<Значение>/gs добавить обязательный модификатор s, чтоб будет обозначать . как вообще любой символ, в том числе пробельный. А .+? - жадный поиск, до первого < |
|||
49
Сияющий в темноте
24.04.19
✎
21:56
|
там фиксированный набор значений.
обеспробелить(считая перевод строки пробелом)а потом сравнить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |