Парсинг,исключение.

serg5

Client
Регистрация
06.09.2017
Сообщения
11
Благодарностей
0
Баллы
3
При редактировании проекта в ProjectMaker V7 RU 7.3.1.0,опция "Парсинг данных". Потребовалось найти значения не содержащие определённые символы. Что-то стандартные [^аbcd] или [^а-d] не срабатывают. Пишет: Выполнение действия ParsePage выполняется разбор "[^а-d]" - Обратный порядок диапазона [x-y].
Как исключить определённые символы или все допустим буквы с помощью Regex.И как перечислить определённые символы или те же все буквы в опциях "Содержит","Не содержит".

и

второй вопрос:
есть html:
-----------------------------------------------------------
<html>
<head>
<title>
</title>
<style>
* { font-family: verdana; font-size: 10pt; COLOR: gray; }
b { font-weight: bold; }
table { border: 1px solid gray;}
td { text-align: center; padding: 25;}
</style>
</head>
<body>
<div class="zag">
Москва
<!----><span class="city" ng-if="item.regionName"></span><!---->

</div>

<div class="dates"></div>
2020г.
<span class="position" ng-if="item.position"></div>

<center>
<br><br><br><br>
<table>
</table>
<br><br>
</center>
</body>
</html>
--------------------------------------------------------------
Как правильно выпарсить: Москва(смотреть в прикр.файле) и 2020г. в разные переменные соответственно.
 

Вложения

Регистрация
07.08.2019
Сообщения
75
Благодарностей
78
Баллы
18
Например так если я все правильно понял)
(?<=<div\ class="zag">)[\w\W]*?(?=<!----><span\ class="city")
70925

И вот (?<=<div\ class="dates"></div>)[\w\W]*?(?=<span\ class="position")
70926

По поводу исключений. Сначала парсим то что содержат нужное. А потом этот уже полученный список проверяем на отсутствие чего-то нужного второго. И в результате как раз таки будет то что нужно. (То что содержит первое и не содержит второго) Надеюсь мой каламбур понятен)
 
  • Спасибо
Реакции: serg5

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113

serg5

Client
Регистрация
06.09.2017
Сообщения
11
Благодарностей
0
Баллы
3
По поводу исключений. Сначала парсим то что содержат нужное. А потом этот уже полученный список проверяем на отсутствие чего-то нужного второго. И в результате как раз таки будет то что нужно. (То что содержит первое и не содержит второго) Надеюсь мой каламбур понятен)
т.е.Zenopposter не понимает исключения типа: [^аbcd] ?
хотя здесь упоминается: https://zennolab.com/wiki/ru:creating-a-regular-expressions
и касательно опций "Содержит","Не содержит".
Можно перечислять значения через какой-то разделитель или только определённые последовательности символов?
Мне например нужно удалить всё с буквами, оставить только числа.
Через исключения было быстро [^а-Z], а так...
html каждый раз может быть разный т.е. к чему -то привязать кроме только чисел сложновато..
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
т.е.Zenopposter не понимает исключения типа: [^аbcd] ?
Проблема, скорее всего только в экшене Парсить данные.

Можно с помощью данного экшена парсить всё что есть (без какой-либо фильтрации) в список.
А потом уже в списке, с помощью экшена Операции над списком - Удалить строки - Удовлетворяющие регулряному выражению убрать лишнее.

и касательно опций "Содержит","Не содержит".
Можно перечислять значения через какой-то разделитель или только определённые последовательности символов?
Нет, для этих фильтров нельзя указать несколько значений.
 
Последнее редактирование:
  • Спасибо
Реакции: serg5

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Я, наверное, опять поспешил с выводами:dy:
Проблема не в экшене, а в регулярках.

Но тут нужна консультация человека, у которого черный пояс по RegExp.
 

serg5

Client
Регистрация
06.09.2017
Сообщения
11
Благодарностей
0
Баллы
3

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Попробуйте протестировать регулярку в редакторе, который сразу подсвечивает результаты (https://regex101.com/, https://regexr.com/)
 

serg5

Client
Регистрация
06.09.2017
Сообщения
11
Благодарностей
0
Баллы
3

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113
  • Спасибо
Реакции: nicanil

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
^((?!машина).)*$ - Будут найдены все строки в которых нет слова `машина`
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63
^((?!машина).)*$ - Будут найдены все строки в которых нет слова `машина`
А если это слово в многострочном тексте, например, PERMISSION_DENIED в:

C#:
{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}
Т.е. нужно чтобы в кубике "Обработка текста-Regex" срабатывала Ошибка при пустом ответе PERMISSION_DENIED
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Так не пойдёт?
87583
Если PERMISSION_DENIED есть - выход по зелёной.
Если не будет - по красной.
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Проще всего в 2 экшена сделать:
1. Сначала с помощью "Обработка текста" и регулярки PERMISSION_DENIED сохранить данные в переменную.
2. Проверить с помощью if, пуста ли переменная.
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63
Проще всего в 2 экшена сделать:
1. Сначала с помощью "Обработка текста" и регулярки PERMISSION_DENIED сохранить данные в переменную.
2. Проверить с помощью if, пуста ли переменная.
Это да, но хотелось одной регуляркой по исключающему признаку.
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Это да, но хотелось одной регуляркой по исключающему признаку.
Попробуйте это выражение - (?s)^((?!PERMISSION_DENIED).)*$

Но советую предварительно потестировать, т.к. это уже чёрная магия из мира Regexp, которой я, к сожалению, владею слабо :bn:
 
  • Спасибо
Реакции: bizzon

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)