У меня возникли проблемы с пониманием различий между квадратными скобками [] и вертикальной полосой | в регулярных выражениях.Регулярное выражение: разница между квадратными скобками [] и вертикальной полосой |
Например: Когда я использую этот код в Java, чтобы изменить формат строки (с помощью |):
str = str.replaceAll("(\\d+|\\W)", "$0 ").replaceAll("\\s+", " ").trim();
С: (12 + ((23+ 37) * (774 * 435)))
Для того, чтобы: (12 + ((23 + 37) * (774 * 435)))
Какой желаемый результат.
Однако, когда я использую этот код, я получить другой вывод (С помощью []):
str = str.replaceAll("[\\d+\\W]", "$0 ").replaceAll("\\s+", " ").trim();
я получаю от: (12 + ((23+ 37) * (774 * 435)))
Для того, чтобы: (1 + 2 ((2 3 + 3 7) * (7 7 4 * 4 3 5)))
Обратите внимание на пробелы между числами (не требуется).
Итак, может кто-нибудь объяснить, что происходит? Или в чем разница между [] и |?
спасибо.
Посмотрите, что эта ссылка уже была принята. Нажмите [здесь] (http://stackoverflow.com/questions/9801630/what-is -the-difference-between-square-brackets-and-roundheses-in-a-regex ""). – chuck
'|' используется для обеспечения «или» функциональности, когда используется внутри(), в то время как символьные классы '[]' обозначают, как в любом символе/символах внутри '[]' для указанного числа символы, обозначаемые следующими спецификаторами '? * + {#}', или если используется '^', это означает, что __don't__ соответствует этому символу. –