Проверка повторения или повторения символа в строке с помощью регулярного выражения
Имея проблемы с синтаксисом, я новичок в использовании регулярных выражений. Я кодирую в Java.
Мне нужно проверить, используется ли апостроф более одного раза в строке. Несколько апострофов могут быть как последовательными, так и распределенными по строке.
Например: Doesn't'work
или же Can''t
у меня есть if
заявление, и я хочу, чтобы это оценить true
если есть больше чем один апостроф:
if(string.matches("\\'")){
.
.
}
любая помощь будет отличной!
4 ответа
Я пытаюсь использовать string.matches
ИМХО тебе это не нужно. Вы можете просто сделать это:
String s = "Doesn't'work or Can''t";
int lengthWithApostrophes = s.length();
int lengthWithoutApostrophes = s.replace("'", "").length();
if(lengthWithApostrophes - lengthWithoutApostrophes >= 2) {
// Two or more apostrophes
}
Если вы хотите сделать это с регулярным выражением, это первое, что пришло мне в голову
s.matches(".*'.*'.*")
Вам не нужно регулярное выражение для этого. Поскольку вы ищете только несколько вхождений, вы можете использовать String#indexOf(String)
а также String#lastIndexOf(String)
методы:
if (str.contains("'") && str.indexOf("'") != str.lastIndexOf("'")) {
// There are more than one apostrophes
}
Правильное регулярное выражение для соответствия, если 2+ '
существует:
(.*'){2,}