Php 括号内的Regex单词边界选项不起作用?
有一件事我不能理解边界这个词Php 括号内的Regex单词边界选项不起作用?,php,regex,Php,Regex,有一件事我不能理解边界这个词 $input="157-XYZ"; preg_match("/[^\d+\-]\bRDS|xyz|ABC\b/i", $input, $output); 上述preg_match匹配$input中的XYZ 但是,如果我将替代项放在括号/[^\d+\-]\b(RDS | xyz | ABC)\b/I中,它似乎不会返回任何内容。我不能在这里使用括号从$output[1]检索结果吗?此正则表达式错误: preg_match("/[^\d+\-]\bRDS|xyz|ABC
$input="157-XYZ";
preg_match("/[^\d+\-]\bRDS|xyz|ABC\b/i", $input, $output);
上述preg_match
匹配$input
中的XYZ
但是,如果我将替代项放在括号/[^\d+\-]\b(RDS | xyz | ABC)\b/I
中,它似乎不会返回任何内容。我不能在这里使用括号从$output[1]
检索结果吗?此正则表达式错误:
preg_match("/[^\d+\-]\bRDS|xyz|ABC\b/i", $input, $output);
因为:[^\d+\-]
表示匹配除之外的所有内容:
+
-
preg_match("/^\d+\-\b(RDS|xyz|ABC)\b/i", $input, $output);
当前您的正则表达式匹配:
[^\d+\-]\bRDS
或xyz
或ABC\b
。所以字符串'XYZ'当然是匹配的。描述你想要匹配的模式,也许我们可以帮助你纠正你的尝试。你怎么可能知道这就是他想要匹配的?你如何将[^\d+\-]
转换成^\d+\-
?一个是负面角色类,另一个是锚定角色类sequence@anubhava是的,我被[]
弄糊涂了。感谢您整理。如果您想匹配一个或多个非数字,请使用[^\d]+
或更好的\d+
@anubhava,抱歉,公平竞争;)最初没有注意到$input
。