Regex - Python: заменить "." на ". \ n", если только [0-9] {0,2} перед "." - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь заменить все знаки препинания "." в строке с разрывом строки, если перед точкой остановки не стоит число.

Мой код:

    response1 = re.sub(r'\. ',
        r'.\n',
        response1)

Но я не знаю, как заставить это работать. Я пробовал некоторые решения, чтобы отрицать Regex, найденные в Интернете, но я понятия не имею, что я делаю.

^((?![0-9]{0,}\. ))$

Введите:

Lorem ipsum. 1. dolor sit amet Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 2. Ut enim ad minim veniam Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.

Выход:

Lorem ipsum. 
1. dolor sit amet Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
2. Ut enim ad minim veniam Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.

Идеальный результат будет (примечание: заглавная буква после "[0-9] {0,1} (. *)". Exp "Consectetur"):

Lorem ipsum. 
1. dolor sit amet 
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
2. Ut enim ad minim veniam 
Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.

Спасибо,

1 Ответ

0 голосов
/ 12 января 2019

Звучит так, как будто вы хотите проверить, есть ли хотя бы один номер перед ., а не если * * * есть число {0,2} перед точкой. (Отрицательный взгляд на все, что повторяется 0 раз будет выполнено всегда, в конце концов)

Начните с отрицательного взгляда за цифрой перед . с

(?<![0-9])\. *

(убедитесь, что он совпадает с пробелом, если таковой имеется, чтобы его можно было заменить)

и заменить на новую строку и точку

.\n

Чтобы также заменить позицию заглавными буквами на новую строку, вы можете чередовать ее и использовать

(?<![0-9])(\.) *|(?<![0-9]\. )(?!^)(?=[A-Z])
  • (?<![0-9]\. ) - убедитесь, что эта позиция не сразу после ##.
  • (?!^) - Убедитесь, что эта позиция не в начале строки
  • (?=[A-Z]) - заглавная буква

и заменить на

\1\n

https://regex101.com/r/0cqH3L/2/

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