RegEx для сопоставления двух слов с двумя заглавными буквами

Я создаю парсер визитных карточек и сталкиваюсь с проблемами с регулярным выражением. У меня есть строка, которую я читаю из своего файла — String s.

Мне нужно иметь возможность захватить строку, содержащую два слова и только две заглавные буквы, а также не содержащую определенные слова. Ниже приведено регулярное выражение, которое я использовал в прошлом, которое работает, но я хочу сделать это выражение if else с .matches и !.matches

else if ((!s.matches(".*\\b(Technologies|Engineer|Systems|Developer|Company|INC|Analyst|Computers|Technology|@)\\b.*") && (s.matches("^(?!(.*[A-Z]){3,})[a-zA-Z]+ [a-zA-Z]+$"))))

 {
     getName();
 }

person maddyg    schedule 12.04.2019    source источник
comment
and only two capital letters ... но INC содержит три заглавные буквы, тем не менее оно есть в вашем белом списке. Можешь объяснить свою логику?   -  person Tim Biegeleisen    schedule 12.04.2019
comment
Почему бы не разделить по пробелам, отфильтровать слова длиной 3+ и исключить список слов? Нет необходимости в регулярном выражении.   -  person ctwheels    schedule 12.04.2019
comment
@TimBiegeleisen Ну, я очень новичок в этом, но моя идея заключалась в том, что если строка содержит 2 заглавные буквы и два слова, то она будет возвращена и напечатана. Я знаю, что не хочу, чтобы эти слова учитывались в этом процессе. Я использую регулярное выражение в остальной части моего проекта.   -  person maddyg    schedule 12.04.2019
comment
@ctwheels Я должен использовать в этом регулярное выражение.   -  person maddyg    schedule 12.04.2019


Ответы (1)


Я не уверен, что это регулярное выражение может быть тем, что вам нужно.

Вход

Technologies Word Word word
Engineer Word Word word
Systems Word word word
Developer Word word word
Company Word word word
INC Word Word Word
Analyst Word word word
Computers Word word word
Technology Word word word

Выход

введите здесь описание изображения

Если нет, вы можете использовать тот же инструмент и создать регулярное выражение, вам нужно только добавить {2} в конце для повторения дважды.

Для удаления определенных слов вам может не понадобиться другое сопоставление, вы можете просто добавить нужный список в начало того же RegEx:

^(?!Technologies|Engineer|Anything|Else|You|Wish)([A-Z][a-z]+\s){2}

Выход

введите здесь описание изображения

person Emma    schedule 12.04.2019