Javascript Regex против Java Regex - PullRequest
       6

Javascript Regex против Java Regex

0 голосов
/ 01 ноября 2018

У меня есть регулярное выражение в Javascript, которое прекрасно работает: /:([\w]+):/g

Я работаю над преобразованием моего javascript-приложения в java, и я знаю, чтобы избежать \ using \ ie /:([\\w]+):/g, но мои тесты по-прежнему не возвращают соответствия для строки "hello: testsmilie: как дела?"

    Pattern smiliePattern = Pattern.compile("/:([\\w]+):/g");
    Matcher m = smiliePattern.matcher(message);
    if(m.find()) {
        System.println(m.group(0));
     }

В javascript он возвращает ": testsmilie:" просто отлично, поэтому я не уверен, в чем разница. Любая помощь будет высоко ценится!

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Ваше регулярное выражение в Java может быть просто:

Pattern.compile(":[^:]+:")

Какое совпадение :, за которым следуют одна или несколько, а не две точки :, за которыми следует :

Или, если вы хотите использовать \w, вы можете использовать:

Pattern.compile(":\\w+:")

Если вы заметили, что вам не нужна скобка для группы (), поэтому для получения результата вы можете просто использовать:

System.out.println(m.group());
0 голосов
/ 01 ноября 2018

Вы должны узнать, как делается регулярное выражение Javascript, потому что / - это разделители реального регулярного выражения, а g - модификатор для global

В Java эквивалент равен: :([\\w]+):, и глобальный флаг не требуется, так как вам просто нужно несколько раз вызвать .find(), чтобы получить все совпадения


Вам следует взглянуть на regex101 , который является хорошим веб-сайтом для проверки регулярных выражений

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