Php 使用preg_匹配分割字符串
我有字符串:Php 使用preg_匹配分割字符串,php,arrays,split,preg-match,preg-match-all,Php,Arrays,Split,Preg Match,Preg Match All,我有字符串: $productList=" Saluran Dua(Bothway)-(TAN007); Speedy Password-(INET PASS); Memo-(T-Memo); 7-pib r-10/10-(AM); FBI (R/N/M)-(Rr/R(A)); "; 我想要这样的结果: Array( [0]=>TAN007 [1]=>INET PASS [2]=>T-Memo [3]=>AM [4]=>Rr/R(A) ); Array (
$productList="
Saluran Dua(Bothway)-(TAN007);
Speedy Password-(INET PASS);
Memo-(T-Memo);
7-pib r-10/10-(AM);
FBI (R/N/M)-(Rr/R(A));
";
我想要这样的结果:
Array(
[0]=>TAN007
[1]=>INET PASS
[2]=>T-Memo
[3]=>AM
[4]=>Rr/R(A)
);
Array
(
[0] => TAN007
[1] => INET PASS
[2] => T-Memo
[3] => AM
[4] => Rr/R(A)
)
我用过:
$separator = '/\-\(([A-z ]*)\)/';
preg_match_all($separator, $productList, $match);
$value=$match[1];
但结果是:
Array(
[0]=>INET PASS
[1]=>AM
);
一定是有错误的代码,有人能帮上忙吗?试试这个正则表达式
$separator = '#\-\(([A-Za-z0-9/\-\(\) ]*)\)#';
试试这个正则表达式
$separator = '#\-\(([A-Za-z0-9/\-\(\) ]*)\)#';
试试这个正则表达式
$separator = '#\-\(([A-Za-z0-9/\-\(\) ]*)\)#';
试试这个正则表达式
$separator = '#\-\(([A-Za-z0-9/\-\(\) ]*)\)#';
对于第1行,您需要0-9 对于第三条生产线,您需要一个 在最后一行中,您需要() 试试这个
#\-\(([a-zA-Z/0-9(\)\- ]*)\)#
对于第1行,您需要0-9 对于第三条生产线,您需要一个 在最后一行中,您需要() 试试这个
#\-\(([a-zA-Z/0-9(\)\- ]*)\)#
对于第1行,您需要0-9 对于第三条生产线,您需要一个 在最后一行中,您需要() 试试这个
#\-\(([a-zA-Z/0-9(\)\- ]*)\)#
对于第1行,您需要0-9 对于第三条生产线,您需要一个 在最后一行中,您需要() 试试这个
#\-\(([a-zA-Z/0-9(\)\- ]*)\)#
您的
regex
不包括要捕获的文本中可能出现的所有字符
正确的regex
是:
$match = array();
preg_match_all('/-\((.*)\);/', $productList, $match);
说明(从内到外):
匹配任何内容李>*
是上面放在括号中的表达式,用于捕获(.*)
中的匹配项李>$match[1]
是上下文中的上述内容:如果前面是-\(.*)
,后面是-(
),则匹配代码>;括号被转义以使用它们的文字值,而不是它们的特殊
解释李>regex
- 在正则表达式中不需要转义
;只有在字符范围内使用(-
,f.e.)时,它才有特殊的解释,但即使在字符范围内,如果破折号([A-Z]
)正好在-
之后或[
之前,它也没有特殊的含义;e、 g.]
指破折号([-A-Z]
)或任何大写字母(-
至A
)Z
- 在正则表达式中不需要转义
print_r($match[1])代码>如下所示:
Array(
[0]=>TAN007
[1]=>INET PASS
[2]=>T-Memo
[3]=>AM
[4]=>Rr/R(A)
);
Array
(
[0] => TAN007
[1] => INET PASS
[2] => T-Memo
[3] => AM
[4] => Rr/R(A)
)
您的regex
不包括要捕获的文本中可能出现的所有字符
正确的regex
是:
$match = array();
preg_match_all('/-\((.*)\);/', $productList, $match);
说明(从内到外):
*
匹配任何内容李>
(.*)
是上面放在括号中的表达式,用于捕获$match[1]
中的匹配项李>
-\(.*)
是上下文中的上述内容:如果前面是-(
,后面是),则匹配代码>;括号被转义以使用它们的文字值,而不是它们的特殊regex
解释李>
- 在正则表达式中不需要转义
-
;只有在字符范围内使用([A-Z]
,f.e.)时,它才有特殊的解释,但即使在字符范围内,如果破折号(-
)正好在[
之后或]
之前,它也没有特殊的含义;e、 g.[-A-Z]
指破折号(-
)或任何大写字母(A
至Z
)
现在,print_r($match[1])代码>如下所示:
Array(
[0]=>TAN007
[1]=>INET PASS
[2]=>T-Memo
[3]=>AM
[4]=>Rr/R(A)
);
Array
(
[0] => TAN007
[1] => INET PASS
[2] => T-Memo
[3] => AM
[4] => Rr/R(A)
)
您的regex
不包括要捕获的文本中可能出现的所有字符
正确的regex
是:
$match = array();
preg_match_all('/-\((.*)\);/', $productList, $match);
说明(从内到外):
*
匹配任何内容李>
(.*)
是上面放在括号中的表达式,用于捕获$match[1]
中的匹配项李>
-\(.*)
是上下文中的上述内容:如果前面是-(
,后面是),则匹配代码>;括号被转义以使用它们的文字值,而不是它们的特殊regex
解释李>
- 在正则表达式中不需要转义
-
;只有在字符范围内使用([A-Z]
,f.e.)时,它才有特殊的解释,但即使在字符范围内,如果破折号(-
)正好在[
之后或]
之前,它也没有特殊的含义;e、 g.[-A-Z]
指破折号(-
)或任何大写字母(A
至Z
)
现在,print_r($match[1])代码>如下所示:
Array(
[0]=>TAN007
[1]=>INET PASS
[2]=>T-Memo
[3]=>AM
[4]=>Rr/R(A)
);
Array
(
[0] => TAN007
[1] => INET PASS
[2] => T-Memo
[3] => AM
[4] => Rr/R(A)
)
您的regex
不包括要捕获的文本中可能出现的所有字符
正确的regex
是:
$match = array();
preg_match_all('/-\((.*)\);/', $productList, $match);
说明(从内到外):
*
匹配任何内容李>
(.*)
是上面放在括号中的表达式,用于捕获$match[1]
中的匹配项李>
-\(.*)
是上下文中的上述内容:如果前面是-(
,后面是),则匹配代码>;括号被转义以使用它们的文字值,而不是它们的特殊regex
解释李>
- 在正则表达式中不需要转义
-
;只有在字符范围内使用([A-Z]
,f.e.)时,它才有特殊的解释,但即使在字符范围内,如果破折号(-
)正好在[
之后或]
之前,它也没有特殊的含义;e、 g.[-A-Z]
指破折号(-
)或任何大写字母(A
至Z
)
现在,print_r($match[1])代码>如下所示:
Array(
[0]=>TAN007
[1]=>INET PASS
[2]=>T-Memo
[3]=>AM
[4]=>Rr/R(A)
);
Array
(
[0] => TAN007
[1] => INET PASS
[2] => T-Memo
[3] => AM
[4] => Rr/R(A)
)
将数字0-9
和破折号-
添加到regexp将数字0-9
和破折号-
添加到regexp将数字0-9
和破折号-
添加到regexp[A-z]
包括A
和z
之间的所有字符。从中可以看到,它包含A
到Z
,A
到Z
和其他6个字符:[
,`,
],
^,
`和backquote[`]。