Php 预赛;编译失败:丢失)“;
这可能是一个愚蠢的错误,但我有一个正则表达式应该匹配什么Php 预赛;编译失败:丢失)“;,php,regex,preg-match,Php,Regex,Preg Match,这可能是一个愚蠢的错误,但我有一个正则表达式应该匹配什么 阿拉拉 afkdsf[] afadf43fds[“guyish”] 但不是以数字开头的字符串 这是密码 preg_match('~^[A-Za-z][A-Za-z0-9]*(\[(?P<array>"(?:.*(?:(?<!\\)(?>\\\\)*\").*|.*)+(?:(?<!\\)(?>\\\\)*"))\]|\[\]|)$~',trim($item[0]," \r"),$matches
- 阿拉拉
- afkdsf[]
- afadf43fds[“guyish”]
preg_match('~^[A-Za-z][A-Za-z0-9]*(\[(?P<array>"(?:.*(?:(?<!\\)(?>\\\\)*\").*|.*)+(?:(?<!\\)(?>\\\\)*"))\]|\[\]|)$~',trim($item[0]," \r"),$matches)
这个正则表达式太疯狂了。我很难相信你真的需要这么复杂的 无论如何,问题是PHP正在使用PHP字符串的反斜杠。所以你必须用另一个反斜杠来逃避所有的反斜杠 考虑到你已经有很多反斜杠,你可能会有点发疯
另请参见:我同意正则表达式看起来很难看。不过,要使其进行编译,只需更改
(?<!\\)(?>\\\\)*
(?\ \ \)*
到
(?)*
两者都有
但我不相信这个正则表达式能可靠地工作。太多的
*
s不合我的口味。Regex:现在你有两个问题。您无法判断此代码的错误是因为它已变得不可读。做点什么来提高可读性,你也会找到解决方案。@j0k类似于gdsg[“hello”]
的维基百科链接非常棒。不知道那有名字。这是一个很好的例子:)@eaterofcasters你最终会得到“只写代码”。另一个维基百科链接:
(?<!\\)(?>\\\\)*
(?<!\\\\)(?>\\\\\\\\)*