2013-12-12 2 views
0

Очень большое спасибо всем, кто ответил ч.1 этого вопроса см hereRegex для непоследовательных заглавных слов ЧАСТЬ DEUX

регулярное выражение, который работал для меня был

(?<![A-Z]\s)\b[A-Z]+\b(?!\s[A-Z]) 

Вопрос сейчас как сделать обратный, т. е. с учетом строки

Это другое предложение С несколькими СТОЛИЧНЫМИ СЛОВАМИ здесь И ТАК МОЖНО ПОСЛЕ нескольких ЛИНИЙ.

Как соответствовать «ЗАГЛАВНЫЕ СЛОВА» и «И ТАМ ЧЕРЕЗ», но не совпадают «С» или «ЛИНИИ», поскольку они изолированы строчными словами либо сторону, либо они могли быть в конце начала предложения.

Я попытался изменить от отрицательных до положительных lookarounds и изменения [A-Z] на [а-г], но опять не зрелищно

Любая помощь будет высоко ценится еще раз.

+0

Не могли бы вы спросить меньше Frenchily? : D –

+0

haha ​​ok сделаю :-) – user3012857

ответ

0

По крайней мере, два последовательных заглавных слова:

[A-Z]{2,}(?:\s+[A-Z]{2,})+ 

[A-Z]{2,}   # first word (At least two letters) 
(?:     # do not capture this group 
    \s+[A-Z]{2,}  #     (whitespace and a word) 
)+     # one or more of/

In [52]: re.findall(r'[A-Z]{2,}(?:\s+[A-Z]{2,})+', 'CAPITAL Words This is a different sentence WITH a few CAPITAL\nWORDS here AND THERE ACROSS multiple LINES.') 
Out[52]: ['CAPITAL\nWORDS', 'AND THERE ACROSS'] 
+0

Почти там. Это будет соответствовать заглавной букве в начале следующего слова. Слова Caps должны быть длиной не менее двух букв, а также они не совпадают по разрыву строки, т. Е. WORD \ n Следующее слово, где заглавная буква N – user3012857

+0

Хорошо, что у меня есть [AZ] + (?: \ S + [AZ ] {2,}) + – user3012857

+0

Да, отредактирован. Первое слово должно быть 2 + буквы? –

Смежные вопросы