我正在尝试替换"
上的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)
他们之间有什么区别,为什么+
和*
在这里工作方式相同?
欢呼声, /马尔钦
答案 0 :(得分:1)
/\b([0-9]+)"/
要求字边界与"
之间至少有一位数字,而/\b([0-9]*)"/
也接受零位数。因此,第一个与"
后面的空格不匹配,第二个不匹配。
如果您想同时加载new 15 " tv
和new 15" tv
,则需要匹配可能存在或不存在的空格字符:
/\b([0-9]+)\s?"/
这匹配单词边界,后跟一个序列(一个或多个)数字,可选地后跟一个空格(或制表符),然后是"
。我认为这就是你要找的东西。
如果没有,您应该首先定义必须匹配的字符串和可能不匹配的字符串。
答案 1 :(得分:1)
+表示找到前一个字符/组1次或更多次。
*表示任意次数(0-infinity)
找到前一个字符/组