Проверка повторения или повторения символа в строке с помощью регулярного выражения

Имея проблемы с синтаксисом, я новичок в использовании регулярных выражений. Я кодирую в 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
} 
if(string.matches(".*\\\'.*\\\'.*")){ . . }

Правильное регулярное выражение для соответствия, если 2+ 'существует:

(.*'){2,}
Другие вопросы по тегам