我正在尝试使用正则表达式捕获一组字符串。 字符串具有以下格式
CID _At 1 2 99 1,198,498,377 414 0 0 0 3,694
我想出的表达是
[A-Za-z][a-z0-9A-Z_-]*\s*[0-6]\s*[0-4]\s\s[\s\d]\d\s*[0-9,]*\s*[0-9,]*\s*[0-9,]*\s*[0-9,]*\s*0\s*[0-9,]*
虽然这个表达式对我有用,并且给出了必要的输出,但我觉得它没有被优化。
有人可以帮助我优化表达吗?
答案 0 :(得分:1)
<?php
$text = 'CID _At 1 2 99 1,198,498,377 414 0 0 0 3,694';
preg_match("/^[A-Z]+\s+[A-Za-z_]+\s+[0-9]+\s+[0-9]+\s+[0-9]+\s+[0-9,]+\s+[0-9]+\s+[0-9]+\s+[0-9]+\s+[0-9]+\s+[0-9,]+$/", $text, $m);
print_r($m);
preg_match("/^([A-Z]+)\s+([A-Za-z_]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9,]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9,]+)$/", $text, $m);
print_r($m);
/*
Output:
Array
(
[0] => CID _At 1 2 99 1,198,498,377 414 0 0 0 3,694
)
Array
(
[0] => CID _At 1 2 99 1,198,498,377 414 0 0 0 3,694
[1] => CID
[2] => _At
[3] => 1
[4] => 2
[5] => 99
[6] => 1,198,498,377
[7] => 414
[8] => 0
[9] => 0
[10] => 0
[11] => 3,694
)
*/
删除*,如果需要组内部匹配() 在php中的例子,如果你需要一些长度,请替换&#34; +&#34; by&#34; {1}&#34; (1个字符长度)
如果您需要,最少1和最多3 {1,3}
如果您需要最小1和最大无限{1,}