Регулярное выражение для ")" соответствующих скобок - PullRequest
0 голосов
/ 22 сентября 2019

У каждого улыбающегося лица должен быть улыбающийся рот, который должен быть помечен ) или D.

Я пытался сделать это, используя следующий код:

import java.util.*;
import java.util.regex.Pattern;
public class SmileFaces {

  public static int countSmileys(List<String> arr) {
  String regx = "/^((:|;)(-|~)?|D|//))$/";
  int count=0;
  ListIterator<String> itr=arr.listIterator();

  while(itr.hasNext()){
    if(Pattern.matches(regx,itr.next())){
          count++;
        }
  }
      return count;
  }
}

Я пробовал это регулярное выражение для проверки улыбки: /^((:|;)(-|~)?|D|//))$/

1 Ответ

0 голосов
/ 22 сентября 2019

Вы могли бы просто пропатчить свое текущее регулярное выражение, правильно экранируя \\) с двумя обратными слешами, но я думаю, что классы символов легче читать здесь:

String regx = "^[;:][~-]?[D)]$";

Обратите внимание, что Java регулярное выражениешаблоны не принимают разделители, как в других языках, таких как PHP или Python, поэтому я удалил их из вашего шаблона.Кроме того, если вы хотите использовать вышеуказанный шаблон с некоторыми методами, такими как String#matches, вы можете удалить привязки ^ и $.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...