我无法理解方括号[]和竖线|之间的差异在正则表达式中。
例如: 当我在java中使用这段代码来改变String的格式时(使用|):
str = str.replaceAll("(\\d+|\\W)", "$0 ").replaceAll("\\s+", " ").trim();
来自:(12 +((23 + 37)*(774 * 435)))
To:(12 +((23 + 37)*(774 * 435)))
哪个是所需的输出。
然而,当我使用这段代码时,我得到一个不同的输出(使用[]):
str = str.replaceAll("[\\d+\\W]", "$0 ").replaceAll("\\s+", " ").trim();
我来自:(12 +((23 + 37)*(774 * 435)))
To:(1 2 +((2 3 + 3 7)*(7 7 4 * 4 3 5)))
注意数字之间的空格(不需要)。
那么,有人可以解释一下发生了什么吗?或者[]和|?
之间有什么区别谢谢。
答案 0 :(得分:2)
垂直条是正则表达式"或"意味着" a或b"
方括号是一个字符类,意思是"来自a或b的任何字符。
Character class是"或"的缩写。从explanation
开始答案 1 :(得分:0)
括号([]
)否定了+
的效果。所以当你有[\\d+\\W]
时,它匹配一个字符(数字,+
或非字)