Я хотел бы знать регулярное выражение для сопоставления слов таким образом, чтобы слова имели максимальную длину . например, если длина слова составляет не более 10 символов, я бы хотел, чтобы регулярное выражение соответствовало, но если длина превышает 10, то регулярное выражение не должно совпадать.
Я пробовал
^(\w{10})$
, но это дает мне совпадения, только если минимальная длина слова составляет 10 символов. Если слово содержит более 10 символов, оно все равно совпадает, но соответствует только первым 10 символам.
границы Word работал бы отлично здесь, такой как с:
\b\w{3,8}\b
\b\w{2,}
\b\w{,10}\b
\b\w{5}\b
Некоторые языки, такие как Java и C++ являются требуемым двойным Escape:
\\b\\w{3,8}\\b
\\b\\w{2,}
\\b\\w{,10}\\b
\\b\\w{5}\\b
<глоток> PS: \\b\\w{,10}\\b
может не работать на все языки или разновидности.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex = "\\b\\w{3,8}\\b";
final String string = "words with length three to eight";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
}
}
}
Full match: words
Full match: with
Full match: length
Full match: three
Full match: eight
<час> Другой хороший для знания метод должен использовать отрицательный lookarounds:
(?<!\w)\w{3,8}(?!\w)
(?<!\w)\w{2,}
(?<!\w)\w{,10}(?!\w)
(?<!\w)\w{5}(?!\w)
(?<!\\w)\\w{3,8}(?!\\w)
(?<!\\w)\\w{2,}
(?<!\\w)\\w{,10}(?!\\w)
(?<!\\w)\\w{5}(?!\\w)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex = "(?<!\\w)\\w{1,10}(?!\\w)";
final String string = "words with length three to eight";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
}
}
}
Full match: words
Full match: with
Full match: length
Full match: three
Full match: to
Full match: eight
jex.im визуализирует регулярные выражения:
<час>, Если Вы хотите упростить/изменить/исследовать выражение, оно было объяснено на верхней правой панели [1 113] regex101.com . Если бы Вы хотели бы, можно также смотреть в [1 114] эта ссылка , как она соответствовала бы против некоторых демонстрационных исходных данных.
<час>