*和+正则表达式之间的区别

Few*_*Tem 15 regex

有人能告诉我下面例子中运算符*+运算符之间的区别:

[<>]+ [<>]*

ale*_*oot 38

它们中的每一个都是量词,星形量词(*)意味着前面的表达式可以匹配零次或多次,{0,}而加号量词(+)表示前面的表达式必须匹配至少一次或多次并且它是相同的作为{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
Run Code Online (Sandbox Code Playgroud)

  • 这个答案已被添加到[Stack Overflow Regular Expression FAQ](http://stackoverflow.com/a/22944075/2736496)的"Quantifiers"下 (3认同)

Ism*_*awi 11

*表示零或多,+表示一个或多个.所以不同的是,空字符串将与第二个表达式匹配,但不匹配第一个表达式.

  • 这不是另一种方式吗?`*`将匹配空,但`+`将不匹配. (3认同)

gho*_*oti 6

+表示前一个原子中的一个或多个.({1,})

*意味着零或更多.除了方括号表达式中指定的字符外,这可以不匹配任何内容.({0,})

请注意,+它在Extended和Perl兼容的正则表达式中可用,并且在Basic RE中不可用. *有三种RE方言可供选择.你正在使用的那种方言很可能取决于你所使用的语言.

好看多了,在现代操作系统的唯一的东西仍然默认为BRE是grepsed(这两者有ERE能力作为一个选项)和非VIM vi.


dan*_*adu 5

它们是量词。

  • +表示1 次或多次(至少出现一次匹配才能成功)
  • *表示0 个或多个(无论搜索字符串是否存在,匹配都会成功)


jah*_*roy 5

*表示零个或多个先前的表达式。

换句话说,表达式是可选的。

您可以像这样定义一个整数:

-*[0-9]+

换句话说,一个可选的负号后跟一个或多个数字。