2013-08-18 6 views
2

Я пытаюсь использовать регулярные выражения для поиска трех последовательных прописных букв внутри строки.Последовательные заглавные буквы regex

Я попытался с помощью:

\b([A-Z]){3}\b 

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

Однако это возвращает строки только сами. Я также хочу, чтобы он нашел три последовательных заглавных буквы, вложенных в строку. i. thisISAtest.

ответ

3

Интересно, почему у вас есть эти границы слов в вашем регулярном выражении \b? Границы слов гарантируют, что за символом слова будет следовать символ без слов (или наоборот). Это то, что предотвращает совпадение thisISAtest. Удалите их, и вы должны быть хорошими!

([A-Z]){3} 

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

[A-Z]{3} 

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

EDIT: Для того, чтобы предотвратить более последовательные прописные буквы, вы можете использовать отрицательные lookarounds:

(?<![A-Z])[A-Z]{3}(?![A-Z]) 

(?<![A-Z]) убеждается нет предшествующей заглавной буквы;

(?![A-Z]) гарантирует, что нет следующей буквы в верхнем регистре.

+0

Спасибо за помощь помощник, по внешности этого регулярного выражения это будет считать ТЕСТ в качестве совпадения, не так ли? Я просто после всего лишь с тремя столицами без каких-либо смежных шапок. Новое для regex btw –

+0

@ user1411838 О, ладно, я отредактирую свое регулярное выражение и дам вам знать :) – Jerry

+0

@ user1411838 Отредактировал мой ответ! – Jerry