PHP:正则表达式-原子、preg_match_all函数

本文详细介绍了正则表达式的原子、元字符、模式修正符及正则函数等核心概念,并通过PHP preg_match_all函数的应用实例展示了如何在字符串中进行全局匹配,包括匹配任意字符、数字、字母及特殊字符等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式:
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] => .
        )

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值