php 正则表达示中的原子

原子

原子是正则表达示里面的最小单位,原子说白了就是需要匹配的内容。一个成立的正则表达示当中必须最少要有一个原子。大理石平台精度等级

所有可见不可见的字符就是原子

说明:我们见到的空格、回车、换行、0-9、A-Za-z、中文、标点符号、特殊符号全为原子。

在做原子的实例前我们先来讲解一个函数,preg_match:

int preg_match ( string $正则 , string $字符串 [, array &$结果] )

功能:根据$正则变量,匹配$字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。

注:上面是preg_match常用的主要几个参数。我在上面将另外几个参数没有列出来。因为,另外两个参数太不常用了。

我们来通过实验来证明:

<?php
//定义一个变量叫zz,放正则表达示。为了方便大家记忆,如果你英文比较ok,建议把变量名还是写成英文的$pattern。
$zz = ‘/a/‘;

$string = ‘ddfdjjvi2jfvkwkfi24‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

因为我希望的是匹配a,而$string当是是不存在a的,所以不成功。

<?php
$zz = ‘/wq/‘;

$string = ‘ssssswqaaaaaa‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

上面的字符串中s后存在wq,因此匹配成功。

接下来我们匹配一个空格试试:

<?php
$zz = ‘/ /‘;

$string = ‘sssssw aaaaa‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

执行结果如下:

因上,$string这个变量的w字符后存在一个空格。所以匹配成功,输出了字符串类型,长度为1。只不过我们的肉眼不可见,看不到这个字符串而已。

特殊标识的原子

原子 说明
\d 匹配一个0-9
\D 除了0-9以外的所有字符
\w a-zA-Z0-9_
\W 除了0-9A-Za-z_以外的所有字符
\s 匹配所有空白字符\n \t \r 空格
\S 匹配所有非空白字符
[ ] 指定范围的原子

这个个需要记住,最好达到默写级别。记忆的时候成对记忆,\d是匹配一个0-9,那么\D 就是除了0-9以外的所有字符。
上面已经说明的很清楚了,我们进行实验一步一步对这些进行学习。

请你在学习的时候,对于这些原子务必达到默写级别。因为,我们以后做实验的时候,一点一点你就学会了。

\d匹配一个0-9

<?php
$zz = ‘/\d/‘;

$string = ‘我爱喝9你爱不爱喝‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

\D匹配一个非0-9的值

<?php
$zz = ‘/\D/‘;

$string = ‘121243中23453453‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

匹配成功,匹配到了中。因为它不是0-9之间的字符。

\w匹配一个a-zA-Z0-9_

<?php
$zz = ‘/\w/‘;

$string = ‘新中_国万岁呀万岁‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

匹配成功,匹配到了下划线。

\W匹配一个非a-zA-Z0-9_

<?php
$zz = ‘/\w/‘;

$string = ‘afasABCWEQR44231284737‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

匹配失败。因为,上面上面全是a-zA-Z0-9_,没有非a-zA-Z0-9_。

\s 匹配所有空白字符\n \t \r 空格

<?php
$zz = ‘/\s/‘;

$string = "中国万
岁";

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

匹配成功,因为有一个回车。

\S 非空字符

<?php
$zz = ‘/\s/‘;

$string = "        
         a       ";

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

匹配成功。虽然上面有空格,回车和缩进。但是,有一个非空白字符a。因此,匹配成功。

[] 指定范围的原子

<?php

$zz = ‘/[0-5]\w+/‘;

$string = ‘6a‘;

$string1 = ‘1C‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

结论:
上例中0-5匹配$string失败,而$string1成功。因为,$string中的第一个数值为6,不在[0-5]的范围之内。

<?php

$zz = ‘/[a-zA-Z0-9_]\w/‘;

$string = ‘ab‘;

$string1 = ‘9A‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

结论:

$string和$string1都匹配成功。因为\w就是[a-zA-Z0-9_]

<?php

$zz = ‘/[abc]\d+/‘;

$string = ‘a9‘;

$string1 = ‘b1‘;

$string2 = ‘c5‘;

$string3 = ‘d4‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

结论:

$string、$string1、$string2匹配成功,而$string3不成功。因为$string3超过了[abc]的范围,它是从d开始的。

[^ 字符] 不匹配指定区间的字符

<?php

$zz = ‘/[^0-9A-Za-z_]/‘;

$string = ‘aaaaab311dd‘;

$string1 = ‘[email protected]!#%$#^##‘;

if(preg_match($zz, $string, $matches)){
   echo ‘匹配到了,结果为:‘;
   var_dump($matches);
}else{
   echo ‘没有匹配到‘;
}

?>

结论:

1.匹配$string不成功,但是匹配$string1的时候成功。因为中括号里面有个抑扬符。

2.^ 抑扬符在中括号里面的作用是不准以中括号里面的字符进行匹配。

总结:

原子 等价式
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\d [0-9]
\D [^0-9]
\s [ \t\n\f\r]
\S [^ \t\n\f\r]

原文地址:https://www.cnblogs.com/furuihua/p/12073155.html

时间: 2024-11-05 22:01:18

php 正则表达示中的原子的相关文章

正则表达示

这里对正则表达示进行一定程度的总结.为避免太过纠结,这里避开一些 鸡肋 的正则用法. 更多文档参考官方文档 http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html 字符 x 字符 x \\ 反斜线字符 \t 制表符 ('\u0009') \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') \f 换页符 ('\u000C') \a 报警 (bell) 符 ('\u0007') \e 转义

php正则表达示的定界符

在学习正则表达示前,我们先要来学习正则表达示的定界符. 定界符,就是定一个边界,边界已内的就是正则表达示. PHP的正则表达示定界符的规定如下: 定界符,不能用a-zA-Z0-9\ 其他的都可以用.必须成对出现,有开始就有结束.大理石机械构件维修 我们来例几个例子: 例子 说明 /中间写正则/ 正确 $中间写正则$ 正确 %中间写正则% 正确 ^中间写正则^ 正确 @中间写正则@ 正确 (中间写正则) 错误 A中间写正则A 错误 注:\ 是转义字符,如果在以后正则表达示里面需要匹配/,如下图:

正则表达示 for Python3

前情提要 从大量的文字内容中找到自己想要的东西,正则似乎是最好的方法.也是写爬虫不可缺少的技能.所以,别墨迹了赶紧好好学吧! 教程来自http://www.runoob.com/python3/python3-reg-expressions.html,感谢菜鸟教程. 一. 在Python3中 正则为 re 模块 import re 二.re.match函数 re.match –>从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话match()就返回none,语法: re.match(p

java 使用正则表达示判断是不是合法的IPV4IPV6地址

直接看代码: import java.util.regex.Pattern; public class App { private static Pattern pattern; private static Pattern ptipv4; static { // ipv6 pattern = Pattern.compile("^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:)|(([0-9A-Fa-f]{

常用正则表达示

1.由数字.26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9][0-9]*$ 4.非正整数(负整数 + 0): ^((-/d+)|(0+))$ 5. 负整数 : ^-[0-9]*[1-9][0-9]*$ 6.整数: ^-?/d+$ 7.非负浮点数(正浮点数 + 0): ^/d+(/./d+)?$ 8.正浮点数 : ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-

Java正则表达中Greedy Reluctant Possessive 的区别

上一篇文章<编程思想之正则表达式 >中讲了正则表达式的原理.使用方法和常见的正则表达式总结,本文将进一步探讨Java正则表达中Greedy.Reluctant.Possessive三种策略的区别. 从Java的官方文档http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html中我们可以看到,正则表达式表示数量词的符号有三套,分别是Greedy(贪婪的).Reluctant(勉强的)和Possessive(独占的).

转转转---js正则表达exec与match的区别说明

正则表达式对象有两个定义方式:: 1.第一种定义: new RegExp(pattern, attributes);如var reg = new RegExp("abc","g") 其中pattern为表示表达式内容,如上表示匹配abc attributes:g,全局匹配,i不区分大小写,m执行多行匹配,用最多的为g和i 2.第二种定义:/pattern/attributes. 如:var reg = /abc/g; 正则表达的规则一些规则在此不再说明,只记录exe

对正则表达这个东西还需要多练习啊

正则表达,如果不配合PHP语言来实现其他功能的话,充其量也就是一行字符串.它最基本的功能就是判断,用来判断某些字符是不是存在于一个已被定义的变量中. 所以,可以用它判断的这个特性来作为function的条件. 另外,正则表达式也具有增删改查的功能,但它最主要的功能就是"查". 最后:从某些方面来说,数据库也算是语言吧.

Javascript正则构造函数与正则表达字面量&amp;&amp;常用正则表达式

本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达式: 使用new RegExp()构造函数 使用正则表达字面量 先说结果,使用正则表达字面量的效率更高. 下面的示例代码演示了两种可用于创建正则表达式以匹配反斜杠的方法: 1 //正则表达字面量 2 var re = /\\/gm; 3 4 //正则构造函数 5 var reg = new RegE