*和+是正则表达式中的两个重要元字符。 *匹配前面的元素零次或多次。例如,表达式a*b将匹配零个或多个a,后面紧跟着一个b。 +匹配前面的元素一次或多次。例如,表达式a+b将匹配一个或多个a,后面紧跟着一个b。 这两个元字符的区别在于,*可以匹配零次出现的元素,而+至少要求有一次出现的元素。 使用这两个元字符可以更灵活地匹配字符串中的模式。

17 浏览
0 Comments

*和+是正则表达式中的两个重要元字符。 *匹配前面的元素零次或多次。例如,表达式a*b将匹配零个或多个a,后面紧跟着一个b。 +匹配前面的元素一次或多次。例如,表达式a+b将匹配一个或多个a,后面紧跟着一个b。 这两个元字符的区别在于,*可以匹配零次出现的元素,而+至少要求有一次出现的元素。 使用这两个元字符可以更灵活地匹配字符串中的模式。

请问有人可以告诉我下面示例中*+运算符的区别吗?

[<>]+ [<>]*

0
0 Comments

在正则表达式中,*和+都是量词。星号量词(*)表示前面的表达式可以匹配零次或多次,相当于{0,};加号量词(+)表示前面的表达式必须匹配至少一次或多次,相当于{1,}。

总结一下:

a* ---> a{0,} ---> 匹配a或aa或aaaaa或空字符串

a+ ---> a{1,} ---> 匹配a或aa或aaaa但不匹配空字符串

这个问题的解答已经添加到了Stack Overflow正则表达式FAQ中的“Quantifiers”部分。

我没有看到任何与空字符串匹配的结果。

结果是相同的。

0
0 Comments

正则表达式中的*表示零个或多个,而+表示一个或多个。所以它们的区别在于空字符串可以匹配第二个表达式,但不能匹配第一个表达式。

难道不是相反吗?*可以匹配空字符串,但+不能。

我认为Ismail是在提到OP的样本模式([<>]+[<>]*)而不是这个回答中讨论的量词的顺序。 我同意,这有点模棱两可。

0
0 Comments

正则表达式中的+表示前一个字符出现一次或多次{1,})。

*表示前一个字符出现零次或多次。这可以匹配除了方括号表达式中指定的字符外,还可以匹配空字符串({0,})。

请注意,+在扩展型和Perl兼容的正则表达式中可用,但在基本型正则表达式中不可用。*在这三种正则表达式方言中都可用。你使用的方言很可能取决于所使用的编程语言。

在现代操作系统中,默认仍然使用BRE的只有grepsed(这两个工具都有作为选项的ERE功能)以及非vim的vi

0