(和[?]之间的区别是什么?

时间:2012-02-10 07:24:03

标签: java regex

[pattern](pattern)之间有什么区别?我无法在谷歌上找到它,因为它不允许输入这些符号。感谢。

2 个答案:

答案 0 :(得分:11)

()用于(通常用于捕获,更改等),而[]用于 set 字符(或一个)确切地说是“人物类”的形式。

因此(abc)的模式将与整个字符串"abc"匹配,而[abc]将匹配a中的任何单个字符,{{ 1}}或b

虽然正则表达式有特定于平台的方面,但这种差异非常标准 - 因此任何正则表达式教程都应该涵盖它。

答案 1 :(得分:1)

[]中的任何内容只匹配一个字符。因此,您可以编写[aeiou]以匹配任何小写元音,或[a-m]以匹配字母表前半部分中的任何字母。因为它只是一个字符,如果您想要多个字符,则可能需要将其与+*结合使用。例如,

f[aeiou]t匹配fat但不匹配feet,而f[aeiou]*t匹配fatfootfeet甚至{{} 1}}。

另一方面,ft中的某些内容匹配没有括号的字符数。如果要使用正则表达式的某些部分进行操作,可以使用()。例如,()匹配ba(na)*ba甚至banana,因为banananana(意味着紧接其之前的任何事件的发生次数)总的来说*。此外,如果您要基于正则表达式进行替换,在那里用新字符串替换匹配的某些部分,na可用于分隔将被替换的内容 - 例如,您可能会替换字符串中与第4个带括号的表达式匹配的任何部分。