*和+正则expression式之间的区别
有人可以告诉我下面的例子中*
和+
操作符的区别:
[<>]+
[<>]*
它们中的每一个都是量词,星号( *
)表示前面的expression式可以匹配零次或多次,就像{0,}
而加量词( +
)表示前面的expression式必须至less匹配一次或多次次,与{1,}
相同。
所以回顾一下:
a* ---> a{0,} ---> Match a or aa or aaaaa or an empty string a+ ---> a{1,} ---> Match a or aa or aaaa but not a string empty
*
表示零个或多个, +
表示一个或多个。 所以区别在于空string会匹配第二个expression式,而不是第一个。
*
表示以前的expression式的零个或多个。
换句话说,expression式是可选的。
你可以定义一个像这样的整数:
-*[0-9]+
换句话说,可选的负号后跟一个或多个数字。
+
表示以前的一个或多个primefaces。 ( {1,}
)
*
表示零个或多个 。 除了在方括号expression式中指定的字符之外,它什么也不能匹配。 ( {0,}
)
请注意, +
在扩展和Perl兼容正则expression式中可用,在基本RE中不可用。 *
在所有三种RE方言中都可用。 你使用的方言很可能取决于你所使用的语言。
很多情况下,现代操作系统中仍然默认为BRE的唯一东西是grep
和sed
(两者均具有EREfunction作为选项)和非vim vi
。
他们是量词。
-
+
表示1或者多个 (至less有一次匹配成功) -
*
表示0或许多 (无论searchstring是否存在,匹配成功)
[<>]+
与[<>][<>]*