Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regexp匹配php中某些字符之前的所有内容_Php_Regex - Fatal编程技术网

Regexp匹配php中某些字符之前的所有内容

Regexp匹配php中某些字符之前的所有内容,php,regex,Php,Regex,我需要正则表达式来匹配从开始到遇到其中一个字符的所有内容;或[或{或(如果没有这些字符,则需要匹配整个单词.) 我使用的是preg\u match(“/(.*?)(=(;| \[| \)(|{124;)/”,$word,$val); 第一组应该在那里,因为我需要匹配的$val值。这是php。有人能帮我吗?preg\u match(“/^([^[{(;]*)/”,$word,$val);“/(.*)[;\[\\{($])/”应该可以做到这一点,而且要简单得多。请注意,您必须对正则表达式中具有特殊含

我需要正则表达式来匹配从开始到遇到其中一个字符的所有内容;或[或{或(如果没有这些字符,则需要匹配整个单词.)

我使用的是
preg\u match(“/(.*?)(=(;| \[| \)(|{124;)/”,$word,$val);

第一组应该在那里,因为我需要匹配的$val值。这是php。有人能帮我吗?

preg\u match(“/^([^[{(;]*)/”,$word,$val);
“/(.*)[;\[\\{($])/”
应该可以做到这一点,而且要简单得多。请注意,您必须对正则表达式中具有特殊含义的字符进行转义。
$
匹配行/字符串的结尾(取决于参数)

编辑:
Think Anomie的解决方案可能会更快一点,因为它只匹配一个子表达式。

你确定它在没有转义的情况下工作吗?现在不要这样认为,除非有特殊处理,直到
[
遇到
]
@Mario-大多数字符在字符类中失去了特殊意义。是的,字符类中的规则是不同的。@Ben Blank:噢,谢谢。在我的屏幕上,分号后面是换行符,所以我在阅读问题时错过了它。+1是的,这就是你想要的。匹配将在
$val[1]
(和
$val[0]
)。您甚至可以消除捕获参数并使用
$val[0]
中的值。