Preg 匹配 Return 数组位置中的两个单词
Preg Match Return Two Word in Array Position
我正在尝试提取包含此结构 %HOUSE% %CAR%
的 .txt 文件的所有单词
我正在使用 Preg_match 并且它可以工作但是当我在同一行中有两个词时数组 return 在同一行中的两个词 [=12] =]
$rawContent = file($_FILES["file"]["tmp_name"]);
$content = implode(" ",$rawContent);
preg_match_all("/%.*%/",$content,$arrMatches");
Array ( [0] => %HOSTNAME% [1] => %INTERFAZ_LAN% [2] => %IP_LAN% %MASK_LAN% [3] => %ID_INTERFACE_WAN% )
在位置[2]有两个字例如
我认为这是我的预匹配表达式的问题我需要添加一些
默认情况下,使用 *
字符的正则表达式将为 "greedy",这意味着它将匹配尽可能多的字符。在这种情况下,表达式 .*
匹配 IP_LAN% %MASK_LAN
.
要将此行为更改为非贪婪,即匹配尽可能少的字符,请在星号后添加一个问号,这样您的模式就变成了/%.*?%/
。
或者,您可以改变您的方法,而不是多次匹配 任何 字符,而是匹配 除了百分号 之外的任何字符任意次数:/%[^%]*%/
.
我正在尝试提取包含此结构 %HOUSE% %CAR%
的 .txt 文件的所有单词我正在使用 Preg_match 并且它可以工作但是当我在同一行中有两个词时数组 return 在同一行中的两个词 [=12] =]
$rawContent = file($_FILES["file"]["tmp_name"]);
$content = implode(" ",$rawContent);
preg_match_all("/%.*%/",$content,$arrMatches");
Array ( [0] => %HOSTNAME% [1] => %INTERFAZ_LAN% [2] => %IP_LAN% %MASK_LAN% [3] => %ID_INTERFACE_WAN% )
在位置[2]有两个字例如 我认为这是我的预匹配表达式的问题我需要添加一些
默认情况下,使用 *
字符的正则表达式将为 "greedy",这意味着它将匹配尽可能多的字符。在这种情况下,表达式 .*
匹配 IP_LAN% %MASK_LAN
.
要将此行为更改为非贪婪,即匹配尽可能少的字符,请在星号后添加一个问号,这样您的模式就变成了/%.*?%/
。
或者,您可以改变您的方法,而不是多次匹配 任何 字符,而是匹配 除了百分号 之外的任何字符任意次数:/%[^%]*%/
.