С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
1

Найти ошибку в регулярном выражении

07.08.2014, 17:36. Показов 691. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Использую RegExpr модуль от Андрея Сорокина.
Сделал небольшое изменение для удобства использования в билдере:
Pascal
1
2
3
const
//  EscChar = '\'; // 'Escape'-char ('\' in common r.e.) used for escaping metachars (\w, \d etc).
  EscChar = '/'; // 'Escape'-char ('\' in common r.e.) used for escaping metachars (\w, \d etc). //Изменил для Сбилдера
Есть выражение
C++
1
2
r->Expression ="<error (.*?)<//error>";
r2->Expression = "code='(/d+)' pos='(/d+)' row='(/d+)' col='(/d+)' len='(/d+)'>.*?<word>(.*?)<//word>(.*?)"
Есть исходный текст в переменной txt
XML
1
2
3
4
5
6
<SpellResult>
<error code='1' pos='12' row='0' col='12' len='4'>
<word>шосе</word>
<s>шоссе</s>
</error>
</SpellResult>
При вызове
C++
1
2
3
4
5
if r->Exec(txt) {
  if (r2->Exec(r->Match[1])) {
  ....
  }
}
r->Match[7] - пустой, хотя должен содержать <s>шоссе</s>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2014, 17:36
Ответы с готовыми решениями:

Получение подвыражений в регулярном выражении
Цель: необходимо обнаруживать правильные относительные адреса в веб. Допустимый вид: file.php...

Не учитывать перевод строки в регулярном выражении
В PHP например есть модификатор &quot;s&quot; пример: &quot;$regex = &quot;/&lt;html&gt;.*&lt;/html&gt;/s&quot;; Если данный...

"Или" в регулярном выражении
Пусть есть регулярное выражение вида &quot;expression1|expression2|expression3|expression4&quot; сравнивающее...

Исправить ошибку в выражении
A=exp(-0.3*(i+j))*(j-5.3)*(j-0.7)*(j-6.5)*pow(i+j,2); где ошибка в строчке? выражение...

5
Native x86
Эксперт Hardware
5638 / 3378 / 957
Регистрация: 13.02.2013
Сообщений: 10,705
07.08.2014, 17:54 2
Простите, а что вы имеет в виду под паттерном ".*?" ? Зачем знак вопроса?
0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
07.08.2014, 17:57  [ТС] 3
паттерн .*? означает любой символ, количество вхождений от 0 и больше
паттерн .* означает любой символ, количество вхождений от 1 и больше
0
Native x86
Эксперт Hardware
5638 / 3378 / 957
Регистрация: 13.02.2013
Сообщений: 10,705
07.08.2014, 18:05 4
Цитата Сообщение от krv Посмотреть сообщение
паттерн .*? означает любой символ, количество вхождений от 0 и больше
паттерн .* означает любой символ, количество вхождений от 1 и больше
Кто вам такую глупость сказал?
1
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
07.08.2014, 18:15  [ТС] 5
Из хелпа к модулю.
"." совпадает с любым символом,
*? ноль или более раз ("не жадный"), то же что {0,}?
* ноль или более раз ("жадный"), то же что {0,}

Небольшое пояснение по поводу "жадности". "Жадные" варианты повторителей пытаются захватить как можно большую часть входного текста, в то время как "не жадные" - как можно меньшую
Добавлено через 5 минут
Да, действительно, вопрос решился
Последний паттерн в выражении, если после него нет обрамляющего текста, должен быть жадным.
то есть
C++
1
r2->Expression = "code='(/d+)' pos='(/d+)' row='(/d+)' col='(/d+)' len='(/d+)'>.*?<word>(.*?)<//word>(.*)"
Спасибо за то что указали куда обратить внимание
0
2859 / 2006 / 988
Регистрация: 21.12.2010
Сообщений: 3,711
Записей в блоге: 10
07.08.2014, 18:48 6
Цитата Сообщение от krv Посмотреть сообщение
Последний паттерн в выражении, если после него нет обрамляющего текста, должен быть жадным.
Можно и не жадный, но добавить после него знак конца строки $
1
07.08.2014, 18:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2014, 18:48
Помогаю со студенческими работами здесь

Найти все варианты размещения знаков операций +,-,* на месте вопросов в выражении 1?2?3?4?5?6?7?8?9=100
Составить программу, которая бы нашла все варианты размещения знаков арифметических операций +,-,*...

Не могу найти ошибку в регулярном выражении
Возникла проблема Считать содержимое файла lab02.htm и заменить выделение жирным шрифтом на...

Не могу найти ошибку в регулярном выражении php
$content = file('http://www.merlion.com/catalog/product/898563/'); //получаем стр $content =...

Прошу указать ошибку в регулярном выражении
Проблема довольно глупая, но я в тупике. Необходимо написать регулярное выражение для изменения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru