Как сопоставить числа с незакрытыми паренями с закрытыми паренями, используя rexex (Python) - PullRequest
2 голосов
/ 24 января 2020

Я изо всех сил пытаюсь найти хорошее соответствие регулярному выражению для такого рода предложений:

1) Удалите современный цемент (20) визуализируйте перед всеми тремя свойствами 2) Осмотрите подошву и Шпильки в передней части всех трех свойств, отремонтируйте, где это возможно, и замените там, где это гнило. 3) Нанесите пропиленную рейку и известь 4) Fini sh с известью sh, включая пигмент, для максимально возможного соответствия существующему цвету (30)

Дело в том, чтобы соответствовать 1), 2), 3), 4), но НЕ (20) или (30).

Моя попытка: ((?!\([0-9]+\))\s*\d+\s*\)) не удалась .

Есть предложения?

1 Ответ

2 голосов
/ 24 января 2020

Вы можете использовать

(?<![\d(])\d+\)

См. Демоверсию regex

Подробности

  • (?<![\d(]) - не допускается di git или ( непосредственно слева от текущего местоположения
  • \d+ - одна или несколько цифр
  • \) - ) char.

Ниже приведен фрагмент кода Python , заключающий совпадения с {{ и }} (только для демонстрационной цели):

import re
text = "1) Remove the modern cement (20) render to the front of all three properties 2) Inspect the sole plate and studs at front of all three properties, repair where possible, and replace where rotten 3) Apply sawn lath and lime render 4) Finish with limewash including pigment to as closely match existing colour as possible (30)"
print( re.sub( r'(?<![\d(])\d+\)', r'{{\g<0>}}', text) )

Вывод:

{{1)}} Remove the modern cement (20) render to the front of all three properties {{2)}} Inspect the sole plate and studs at front of all three properties, repair where possible, and replace where rotten {{3)}} Apply sawn lath and lime render {{4)}} Finish with limewash including pigment to as closely match existing colour as possible (30)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...