Найти - Пользователи
Полная версия: Выловить регулярными выражениями слова написанные с большой буквы
Начало » Центр помощи » Выловить регулярными выражениями слова написанные с большой буквы
1
smirnoffs
Задача выловить регулярными выражениями слова, начинающиеся с больших букв, находящиеся не в начале предложения.
Например
re.findall(regexp, "Hi, Nick. How are you doing? Are you going to Kyiv next week?") = ['Nick', 'Kyiv']
Я написал вот такую конструкцию, но она почему-то не отсеивает слова после точек, знаков вопроса.
regexp='(?!^|\.\s?|\!\s|\?\s?)+[A-Z]{1,}[a-z]?'
Как правильно написать выражение?
diam123
regexp="([A-Z]\w+)"
['Hi', 'Nick', 'How', 'Are', 'Kyiv']
oops, недосмотрел “не в начале предложения”
P.S. http://www.addedbytes.com/download/regular-expressions-cheat-sheet-v2/png/
smirnoffs
diam123
regexp="([A-Z]\w+)"
['Hi', 'Nick', 'How', 'Are', 'Kyiv']
oops, недосмотрел “не в начале предложения”
P.S. http://www.addedbytes.com/download/regular-expressions-cheat-sheet-v2/png/
Да, да, именно не в начале предложения.
diam123
smirnoffs
Да, да, именно не в начале предложения.
Если брать указанную вами строку, то:
regexp="[^\.\?\!] ([A-Z]\w+)"
Но это сильно накладывает ограничения, такие как:
Предложение должно заканчиваться на . или ? или !
Перед нужными словами обязательно должен стоять пробел…
smirnoffs
diam123
smirnoffs
Да, да, именно не в начале предложения.
Если брать указанную вами строку, то:
regexp="[^\.\?\!] ([A-Z]\w+)"
Но это сильно накладывает ограничения, такие как:
Предложение должно заканчиваться на . или ? или !
Перед нужными словами обязательно должен стоять пробел…
Пробел может стоять, а может и не стоять. А еще их может быть два. Как тогда?
diam123
smirnoffs
Пробел может стоять, а может и не стоять. А еще их может быть два. Как тогда?
Вы бы больше примеров дали, батенька :)
Есть вот такой вот вариант:
regexp = u"[^\.\?\!\$][\s|\S]([A-Z]\w+)"
Если у вас в словах не будет смешанных регистров букв (aMaya), то он подойдёт.
Пробуйте, и давайте еще образцов текстов, если не то :)
smirnoffs
Пример
re.findall(regexp, "We are going to visit Cambridge (California, US) next week.  Would you join?") = ['Cambridge','California','US']
Nik
>>> s = "Hi, Nick!  How are you doing? Are you going to Kyiv next week?"
>>> p = re.compile(r"(?<!^)(?<![.!? ])(?:\s*)([A-Z][a-zA-Z]+)", re.M)
>>> p.findall(s)
['Nick', 'Kyiv']
>>> s = "We are going to visit Cambridge (California, US) next week. Would you join?"
>>> p.findall(s)
['Cambridge', 'California', 'US']
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB