Строки S
выглядит следующим образом:Получить предшествующую линию и следующую строку для UPPERCASEWORD
S = "HOLY CROWS \n This looks scary. \n Horror score rises. \n MAYBE I should ask \n STACKOVERFLOW \n They would know."
Желаемой Выход:
"Я должен спросить StackOverflow Они будут знать."
В основном:
Найти каждый матч, который имеет одинарное верхний регистр слово, которые завернуты в следующих условиях:
- Получить строку после UPPERCASEWORD до разрыва строки.
- Получить строку, предшествующую UPPERCASEWORD, до тех пор, пока не встретится ANOTHERUPPERCASEWORD, если и нет, если между ними не было разрывов строк.
Вот что я до сих пор:
\w\n\w[A-Z]+\n.*?\w
Но это не покорить полную линию до и после слова. Он также не выполняет второе требование.
Выходной ток:
"К StackOverflow Т"
Попробуйте ['[AZ] {2}. * \ R? \ N. * [AZ] {2}. * \ R? \ N. *'] (Https://regex101.com/r/hw4LxQ/1). Я предполагаю, что вы хотели бы соответствовать ALLCAPS длиной не менее 2 букв. В противном случае попробуйте ['\ b [AZ] + \ b. * \ R? \ N. * \ B [AZ] + \ b. * \ R? \ N. *'] (Https://regex101.com/ г/hw4LxQ/2). –