正则表达式模式差异 - “*”和“+”

时间:2011-05-29 09:44:53

标签: php regex repeat

我正在尝试替换"上的inch,即12" wall将成为12 inch wall

我有两种模式:

/\b([0-9]+)"/ -> preg_replace('/\b([0-9]+)"/', '$1 inch ', $string)

/\b([0-9]*)"/ -> preg_replace('/\b([0-9]*)"/', '$1 inch ', $string)

他们之间有什么区别,为什么+*在这里工作方式相同?

欢呼声, /马尔钦

2 个答案:

答案 0 :(得分:1)

/\b([0-9]+)"/要求字边界与"之间至少有一位数字,而/\b([0-9]*)"/也接受零位数。因此,第一个与"后面的空格不匹配,第二个不匹配。

如果您想同时加载new 15 " tvnew 15" tv,则需要匹配可能存在或不存在的空格字符:

/\b([0-9]+)\s?"/

这匹配单词边界,后跟一个序列(一个或多个)数字,可选地后跟一个空格(或制表符),然后是"。我认为这就是你要找的东西。 如果没有,您应该首先定义必须匹配的字符串和可能不匹配的字符串。

答案 1 :(得分:1)

+表示找到前一个字符/组1次或更多次。

*表示任意次数(0-infinity)

找到前一个字符/组