正则表达式:
1.原子
2.元字符
3.模式修正符
4.正则函数
补充:preg_match_all函数
preg_match_all — 执行一个全局正则表达式匹配
说明
preg_match_all ( string $pattern , string $subject [, array &$matches
[, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) : int
参数
pattern
要搜索的模式,字符串形式。
subject
输入字符串。
matches
多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
原子:
1.任意一个字符
.
点匹配任意一个字符
<?php
// 原子
$str="linux is very much";
$ptn='/./';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => n
[3] => u
[4] => x
[5] =>
[6] => i
[7] => s
[8] =>
[9] => v
[10] => e
[11] => r
[12] => y
[13] =>
[14] => m
[15] => u
[16] => c
[17] => h
)
)
2.单个字母,数字
[a-z]
中括号匹配任意一个中括号中的字符
**
<?php
// 原子
$str="linux is very much";
$ptn='/[a-z]/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
*结果是 *
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => n
[3] => u
[4] => x
[5] => i
[6] => s
[7] => v
[8] => e
[9] => r
[10] => y
[11] => m
[12] => u
[13] => c
[14] => h
)
)
[0-9]
中括号匹配任意一个中括号中的字符
**
<?php
// 原子
$str="linux is 666666very 121555 much";
$ptn='/[0-9]/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => 6
[1] => 6
[2] => 6
[3] => 6
[4] => 6
[5] => 6
[6] => 1
[7] => 2
[8] => 1
[9] => 5
[10] => 5
[11] => 5
)
)
[abc]
中括号匹配任意一个中括号中的字符
**
<?php
// 原子
$str="linux is 666666very 121555 much";
$ptn='/[abc]/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => c
)
)
[A-Z]
**
<?php
// 原子
$str="linux is FFFFFFFHGFHFGHGFF 666666very 121555 much";
$ptn='/[A-Z]/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => F
[1] => F
[2] => F
[3] => F
[4] => F
[5] => F
[6] => F
[7] => H
[8] => G
[9] => F
[10] => H
[11] => F
[12] => G
[13] => H
[14] => G
[15] => F
[16] => F
)
)
[123]
**
<?php
// 原子
$str="linux is 666666very 121555 much";
$ptn='/[123]/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 1
)
)
3.特殊字符
\d 任意一个数字
**
<?php
// 原子
$str="linux is FFFFFFFHGFHFGHGFF 666666very 121555 much";
$ptn='/\d/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => 6
[1] => 6
[2] => 6
[3] => 6
[4] => 6
[5] => 6
[6] => 1
[7] => 2
[8] => 1
[9] => 5
[10] => 5
[11] => 5
)
)
\D 任意一个非数字
**
<?php
// 原子
$str="linux is FFFFFFFHGFHFGHGFF 666666very 121555 much";
$ptn='/\D/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => n
[3] => u
[4] => x
[5] =>
[6] => i
[7] => s
[8] =>
[9] => F
[10] => F
[11] => F
[12] => F
[13] => F
[14] => F
[15] => F
[16] => H
[17] => G
[18] => F
[19] => H
[20] => F
[21] => G
[22] => H
[23] => G
[24] => F
[25] => F
[26] =>
[27] => v
[28] => e
[29] => r
[30] => y
[31] =>
[32] =>
[33] =>
[34] => m
[35] => u
[36] => c
[37] => h
)
)
\s 空格
**
<?php
// 原子
$str="linux is FFFFFFFHGFHFGHGFF 666666very 121555 much";
$ptn='/\s/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
)
)
\S 非空格
**
<?php
// 原子
$str="linux is FFFFFFFHGFHFGHGFF 666666very 121555 much";
$ptn='/\S/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => n
[3] => u
[4] => x
[5] => i
[6] => s
[7] => F
[8] => F
[9] => F
[10] => F
[11] => F
[12] => F
[13] => F
[14] => H
[15] => G
[16] => F
[17] => H
[18] => F
[19] => G
[20] => H
[21] => G
[22] => F
[23] => F
[24] => 6
[25] => 6
[26] => 6
[27] => 6
[28] => 6
[29] => 6
[30] => v
[31] => e
[32] => r
[33] => y
[34] => 1
[35] => 2
[36] => 1
[37] => 5
[38] => 5
[39] => 5
[40] => m
[41] => u
[42] => c
[43] => h
)
)
\w 任意一个字母、数字或下划线
**
<?php
// 原子
$str="linuGFF___ 666y _ ";
$ptn='/\w/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => n
[3] => u
[4] => G
[5] => F
[6] => F
[7] => _
[8] => _
[9] => _
[10] => 6
[11] => 6
[12] => 6
[13] => y
[14] => _
)
)
\W 任意一个非字母、数字或下划线
**
<?php
// 原子
$str="linuGFF___ 666y _ ";
$ptn='/\W/';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] =>
[1] =>
[2] =>
)
)
4.向后引用
$0-$n
5.转义符
\*,\.、\\
**
<?php
// 原子
$str="li.nuG..F.F___ 666y _ ";
$ptn='/\./';
preg_match_all($ptn,$str,$arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
**
Array
(
[0] => Array
(
[0] => .
[1] => .
[2] => .
[3] => .
)
)