匹配可变长度文本的PHP表达式

匹配可变长度文本的PHP表达式,php,regex,Php,Regex,如果我有字符串: Detroit 10 New Jersey 2 (FINAL) 有没有办法在单个正则表达式中匹配底特律10号和新泽西2号 如果城市名称的长度不同,并且有些城市名称中有空格,我不知道该怎么做。您可以使用正则表达式,使用数字来分隔城市名称的结尾 比如: 试试这个: $str = "Detroit 10 New Jersey 2 (FINAL)"; preg_match_all("/(\w+ )+\d+/", $str, $m); print_r( $m[0] );

如果我有字符串:

Detroit 10    New Jersey 2 (FINAL)
有没有办法在单个正则表达式中匹配底特律10号和新泽西2号


如果城市名称的长度不同,并且有些城市名称中有空格,我不知道该怎么做。

您可以使用正则表达式,使用数字来分隔城市名称的结尾

比如:

试试这个:

$str = "Detroit 10    New Jersey 2 (FINAL)";

preg_match_all("/(\w+ )+\d+/", $str, $m);

print_r( $m[0] );// the resulted strings are in this table $m[0]

希望它有帮助

如果你的字符串实际上有三个空格,你可以用它来分割。按数字分割。那会给你三条线。“底特律10号”、“新泽西2号”和“决赛”。一旦你得到了单独的城市/分数,将它们分割成城市,分数就会更容易。瓦利德·汗,我刚刚使用了你的方法(将其分割成一个包含2个值的数组),然后去掉了不必要的空格和“(FINAL)”。谢谢。啊,这是一个很好的开始。现在我只需要找到一种方法,以大写字母(而不是空格)开头。第一场比赛有效,但第二场比赛结果是“新泽西2号”。让我看看是否可以从这里找到答案。更简单的方法是:/([^\d\s][^\d]*\d+)/
$str = "Detroit 10    New Jersey 2 (FINAL)";

preg_match_all("/(\w+ )+\d+/", $str, $m);

print_r( $m[0] );// the resulted strings are in this table $m[0]