*和+正则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的唯一东西是grepsed (两者均具有EREfunction作为选项)和非vim vi

他们是量词。

  • +表示1或者多个 (至less有一次匹配成功)
  • *表示0或许多 (无论searchstring是否存在,匹配成功)

[<>]+[<>][<>]*