*和+正则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是否存在,匹配成功)
[<>]+与[<>][<>]*