Создание регулярного выражения для соответствия следующему сценарию - PullRequest
0 голосов
/ 27 августа 2018

Я студент, работающий над небольшим исследовательским проектом, в котором мне нужно почистить веб-страницы, которые соответствуют следующему требованию: - Если слово X говорит, что «abc» находится где-нибудь в тексте, ищите шаблон Y, скажем «pqr», еслиэто происходит в пределах 25-символьного окна по обе стороны от вхождения X. Например,

pqrxyz допустимо.

xyz недопустимо.

xyzpqr действителен.

pqr123456789123456789123456789xyz недействителен.

Я не могу понять это.Любая помощь будет оценена.

((?=pqr).{20,}abc) | (pqr{20,}(?!abc))

Это моя попытка до сих пор.Я не знаю, как включить ограничение окна из 20 символов.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Примерно так должно работать, обрабатывая оба случая: pqr.{,25}?xyz|xyz.{,25}?pqr

Я использовал Debuggex для тестирования, и я думаю, что это простой способ показать, как работает регулярное выражение.

Ответ Джона дает более подробную информацию о конкретных элементах в регулярном выражении.

Визуализация регулярных выражений

0 голосов
/ 27 августа 2018

. - это регулярное выражение для «любого отдельного символа».

{n,m} - это регулярное выражение для «не менее n и не более m повторений предыдущего регулярного выражения».

Итак, регулярное выражение xyz.{0,25}pqr означает «xyz, за которым следует до двадцати пяти символов, после которых следует pqr».

Итак, учитывая возможность pqr происходит до или после xyz, мы получаем следующую строку кода Python:

if re.search('pqr.{0,25}xyz', line) or re.search('xyz.{0,25}pqr', line):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...