0

我经常使用正则表达式进行查找和替换,并且我想尽可能地使用最佳实践。

我理解 the+*characters 之间的区别。reference *将查找指定短语的所有匹配项,+并将查找除指定短语的最后一个实例之外的所有匹配项。

话虽如此,当我在互联网上查找正则表达式短语时,我看到很多人在使用+我认为他们可以使用的地方*。是使用标准+而不是*通用正则表达式短语还是我缺少一些约定?

4

5 回答 5

3

我认为您对这些字符的含义没有正确的概念。简单的*意思是匹配指定的前项(通常是单个字符、字符类或带括号的子模式)0 次或多次。这意味着您可以在匹配的字符串中多次出现该项目。

+除了字符/子模式必须发生 1 次或多次之外,几乎完全相同。

所以区别在于:

* - match 0 or more times
+ - match 1 or more times

没有最佳实践,因为每个都应酌情使用。

于 2013-08-19T16:32:55.630 回答
2

您链接到的网站很棒,但是您误解了*和的定义+。本质上,*意思是“零个或多个”,+意思是“一个或多个”。

换句话说:

  • X*意思是“连续任意数量的X字符,或者可能根本没有。
  • X+意思是“连续任意数量的X字符,但至少一个。

所以X+等价于XX*(甚至X*X)。它们都有无限的上限,但下限不同。

至于哪个是标准/最佳实践,答案是“都不是”,因为它们都有不同的含义。但是,如果您尝试匹配一项或多项内容,最好X+使用XX*. 两者都是正确的,但第一个更短且更具可读性。

于 2013-08-19T16:43:34.243 回答
0

正则表达式根据使用的语言而有所不同,但您似乎对*and使用了错误的定义+

*{0,}(零次或多次)
+相同 与{1,}(一次或多次)相同

于 2013-08-19T16:29:55.897 回答
0

“在通用正则表达式短语上使用 + 而不是 * 的标准是标准,还是我缺少一些约定?”

没有也没有。有些人写的正则表达式不好,有些人不需要区分,有些人做对了。没有什么特别的约定可以遵守。

然而,正如 zzzzBov 所指出的,无论如何,您对 * 和 + 含义的理解似乎都是不正确的。

于 2013-08-19T16:31:17.123 回答
0

在标准正则表达式中,+表示“一个或多个前面的标记”,而*表示“零个或多个前面的标记”。

[0-9]+例如,表示“一位或多位数字”。

[0-9]*另一方面,表示“零个或多个数字”。

于 2013-08-19T16:31:34.830 回答