Python Регулярное выражение для соответствия всем вариантам ключевого слова, кроме тех, которым предшествует слово с заглавной буквы. - PullRequest
4 голосов
/ 05 мая 2020

Я ищу Python Regex для соответствия всем вариациям ключевого слова, кроме тех, которым предшествует слово с заглавной буквы ->, кроме случаев, когда это слово с заглавной буквы является началом предложения. Также исключает слова в скобках.

например:

keyword = 'public record'
string1 = 'Hello. His public records are available at city hall.' #match public records His is the start of a sentence so we ignore that it is capitalized and match
string2 = 'his records are at Newsom Public Record DataBase'      #nomatch
string3 = 'Public records may be available online'                #match Public records
string4 = '[public records](http:/....)'                          #nomatch

Пока что я пробовал:

pattern = f'(?<!\[)(?i)\\w*{keyword}\\w*'   #Doesn't  take into account preceding capitalized words
pattern = f'(?<![A-Z][\w-]\s)(?<!\[)(?i)\\w*{keyword}\\w*' #Doesn't work for cap words > 2 chara

1 Ответ

2 голосов
/ 06 мая 2020

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

pattern = r'(\. [A-Z]\w* |\W[^A-Z]\w* |^)(?=[pP]ublic [rR]ecord)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...