Я использую java и пытаюсь написать регулярное выражение, за исключением этого:
jkdsl;a asdfasdf asdfjkl;
и это
789u 13789u
но не этот
HJKs9
или это
hiop hiopwer rewk3 fheio2
Пока у меня это есть, но он не работает (я использовал онлайн-тестер регулярных выражений):
(\S+\s){2,3}
Я думаю:
\S+ означает больше одного пробела
\s означает пробел
(X) {2,3} означает 2-3 (включительно) последовательные вхождения X
Где я ошибся?
(Я поместил его в java как "(\\S+\\s){2,3}"
как\является побегом)
Для соответствия строкам, имеющим два или три слова.
^\S+(?:\s+\S+){1,2}$
Java regex будет,
^\\S+(?:\\s+\\S+){1,2}$
\S+
соответствует одному или нескольким непространственным символам. \S+
соответствует одному или нескольким символам пробела. {1,2}
называемый квантором повторения, который повторяет предыдущий токен, который (?:\S+\S+)
один или два раза. $
Утверждается, что мы находимся в конце строки.
ИЛИ
Используйте это, если ваш ввод содержит предыдущие или следующие пробелы.
"^\\s*\\S+(?:\\s+\\S+){1,2}\\s*$"
^ *\S+(?:\s+\S+){1,2} *$
если перед строкой стоит пробел.