我在 PHP 中使用 preg_match 和 REGEX 来更改包含以下内容的字符串的路径变量:
“任何字符 - 油漆,一到十四之间的旧数字 - 任何字符”
我放了一些有效字符串的例子:
- 油漆,旧 12
- 油漆,旧的 0a
-油漆,旧 6b
...
我使用了 preg_match 如下:
if(preg_match("/*paint, old ^([1-9]|1[0-4])*/",$ubicacion))
{
...
}
else
{
...
}
但它给了我这个错误:preg_match (): 编译失败:在偏移 0 处没有重复
你知道什么是失败吗?
在preg_match (): Compilation failed: nothing to repeat at offset 0
多数情况下是由于量词在正则表达式的开始存在。正则表达式不能以量词开头,即/+1/
, /*1/
,/{2,}1/
并且/{2,5}1/
会抛出这个错误。
您可以使用
if (preg_match('~\bpaint,\s+old\s+(1[0-4]|[1-9])(?!\d)~i', $string)) {
...
}
\b
- 一个词边界paint,
-paint,
字符串\s+
- 一个或多个空格 - old
- 一个old
字符串\s+
- 一个或多个空格(1[0-4]|[1-9])
-1
后跟数字 from 0
to4
或非零数字(?!\d)
- 后面没有任何其他数字。请注意,您不需要在开始和结束时添加任何模式来实际使用预期匹配前后的文本,因为您只需要一个布尔结果。
最后i
以不区分大小写的方式使模式匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句