В чем разница между этими похожими регулярными выражениями Java? - PullRequest
1 голос
/ 11 ноября 2010

Являются ли эти три связанных регулярных выражения Java просто разными синтаксисами для выполнения одной и той же вещи?

String resultString = subjectString.replaceAll("(?m)^\\d+\\.\\s*", "");
String resultString = subjectString.replace("^[0-9]+\\. *", "");
String resultString = subjectString.replaceAll('\\d+\.\\s+', '');

Ответы [ 3 ]

3 голосов
/ 11 ноября 2010

Нет, они разные:

  • (?m)^\\d+\\.\\s* совпадения
    • одна или несколько цифр в начале строки (примечание m модификатор в (?m)), затем
    • литерал ., затем
    • ноль или более пробельные символы (эквивалентно [ \t\n\x0B\f\r]);
  • ^[0-9]+\\. * соответствует
    • одной или нескольким цифрам в начале строки , за которой следует
    • литерал ., за которым следует
    • ноль больше пробелов ;
  • \\d+\.\\s+соответствует
    • одной или нескольким цифрам в любой позиции , затем
    • , литерал ., затем
    • один или более пробельные символы .

Кроме того, как заметил Эдриан Смит , replace не ожидает регулярного выраженияно один char или CharacterSequence ( String реализует этоинтерфейс).

3 голосов
/ 11 ноября 2010

replace не принимает регулярные выражения; он принимает буквенную строку (т.е. действительно будет искать именно эти символы). replaceAll принимает регулярное выражение.

Третий недействителен, поскольку используются одинарные кавычки. Одинарные кавычки представляют отдельные символы, которые char. Двойные кавычки создают строки (несколько символов), которые String с.

0 голосов
/ 11 ноября 2010

Закрыть, каждый заменяет число, за которым следует точка, за которой следует пробел , то есть 11..Но у каждого есть небольшая разница:

Первый заменит, требует, чтобы цифра была в начале строки, а пробел может быть любым, то есть табуляцией.

Второй isnНеверно, как отмечалось, но если бы это было replaceAll(), то пробел мог быть только символом пробела.

Третий не обязательно должен быть в начале строки и заменит любое белое-пространственные символы, подобные первому.

Остальные различия заключаются в простом синтаксисе.

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