匹配所有重复出现的正则表达式
Match all repeating occurrences regex
我需要匹配以 "Token" 开头的空格分隔的字符串。
示例字符串
Token token=12eqddsfasdsa user_email=user@mail.com app_id=2312edsdas
我试过几种表达方式。
^Token (\w*=[^-\s]+)
仅捕获一个第一个匹配项。
^Token(\s\w*=[^-\s]+)+
此表达式仅捕获最后一个。
我需要捕获
match[0] = token=12eqddsfasdsa
match[1] = user_email=user@mail.com
match[2] = app_id=2312edsdas
我知道有很简单的方法可以达到这个结果,但我没有足够的经验来获得它。
请帮忙解决这个问题。
您面临着为重复组捕获内容的常见问题,因此
我会为此使用两个正则表达式:
1- 首先使用此正则表达式检测以 Token
模式开头的行:
^Token
2- 要提取您感兴趣的匹配项,请使用另一个正则表达式(如您的正则表达式):
(\w*=[^-\s]+)
您可以使用这样的代码
$str = <your string>
if (preg_match("/^Token/", $str)) {
preg_match_all('/(\w*=[^-\s]+)/', $str, $matches);
}
比赛信息
MATCH 1
1. [6-25] `token=12eqddsfasdsa`
MATCH 2
1. [26-50] `user_email=user@mail.com`
MATCH 3
1. [51-68] `app_id=2312edsdas`
我认为简单的方法是使用 explode 函数。
$str = "Token token=12eqddsfasdsa user_email=user@mail.com app_id=2312edsdas";
$result = explode(" ", $str);
结果会是这样的:
Array ( [0] => "Token" [1] => "token=12eqddsfasdsa". [2] => "user_email=user@mail.com" [3] => "app_id=2312edsdas")
我需要匹配以 "Token" 开头的空格分隔的字符串。
示例字符串
Token token=12eqddsfasdsa user_email=user@mail.com app_id=2312edsdas
我试过几种表达方式。
^Token (\w*=[^-\s]+)
仅捕获一个第一个匹配项。
^Token(\s\w*=[^-\s]+)+
此表达式仅捕获最后一个。
我需要捕获
match[0] = token=12eqddsfasdsa
match[1] = user_email=user@mail.com
match[2] = app_id=2312edsdas
我知道有很简单的方法可以达到这个结果,但我没有足够的经验来获得它。
请帮忙解决这个问题。
您面临着为重复组捕获内容的常见问题,因此 我会为此使用两个正则表达式:
1- 首先使用此正则表达式检测以 Token
模式开头的行:
^Token
2- 要提取您感兴趣的匹配项,请使用另一个正则表达式(如您的正则表达式):
(\w*=[^-\s]+)
您可以使用这样的代码
$str = <your string>
if (preg_match("/^Token/", $str)) {
preg_match_all('/(\w*=[^-\s]+)/', $str, $matches);
}
比赛信息
MATCH 1
1. [6-25] `token=12eqddsfasdsa`
MATCH 2
1. [26-50] `user_email=user@mail.com`
MATCH 3
1. [51-68] `app_id=2312edsdas`
我认为简单的方法是使用 explode 函数。
$str = "Token token=12eqddsfasdsa user_email=user@mail.com app_id=2312edsdas";
$result = explode(" ", $str);
结果会是这样的:
Array ( [0] => "Token" [1] => "token=12eqddsfasdsa". [2] => "user_email=user@mail.com" [3] => "app_id=2312edsdas")