PowerShell正则表达式(一) 定义模式
PowerShell正则表达式(一) 定义模式 7
如果你需要更加精确的模式识别需要使用正则表达式。正则表达式提供了更加丰富的通配符。正因为如此,它可以更加详细的描述模式,正则表达式也因此稍显复杂。 使用下面的表格中列出的正则表达式元素,你可以非常精准的描述模式。这些正则表达式元素可以归为三大类。
字符:字符可以代表一个单独的字符,或者一个字符集合构成的字符串。
限定符:允许你在模式中决定字符或者字符串出现的频率。
定位符:允许你决定模式是否是一个独立的单词,或者出现的位置必须在句子的开头还是结尾。
正则表达式代表的模式一般由四种不同类型的字符构成。
文字字符:像”abc”确切地匹配”abc“字符串
转义字符:一些特殊的字符例如反斜杠,中括号,小括号在正则表达式中居于特殊的意义,所以如果要专门识别这些特殊字符需要转义字符反斜杠。就像”\[abc\]”可以识别”[abc]”。
预定义字符:这类字符类似占位符可以识别某一类字符。例如”\d”可以识别0-9的数字。
自定义通配符:包含在中括号中的通配符。例如”[a-d]”识别a,b,c,d之间的任意字符,如果要排除这些字符,可以使用”[^a-d]”。
| 元素 | 描述 |
| . | 匹配除了换行符意外的任意字符 |
| [^abc] | 匹配除了包含在中括号的任意字符 |
| [^a-z] | 匹配除了包含在中括号指定区间字符的任意字符 |
| [abc] | 匹配括号中指定的任意一个字符 |
| [a-z] | 匹配括号中指定的任意区间中的任意一个字符 |
| \a | 响铃字符(ASCII 7) |
| \c or \C | 匹配ASCII 中的控制字符,例如Ctrl+C |
| \d | 匹配数字字符,等同于[0-9] |
| \D | 匹配数字以外的字符 |
| \e | Esc (ASCII 9) |
| \f | 换页符(ASCII 15) |
| \n | 换行符 |
| \r | 回车符 |
| \s | 白空格(空格,制表符,新行) |
| \S | 匹配白空格(空格,制表符,新行)意外的字符 |
| \t | 制表符 |
| \uFFFF | 匹配Unicode字符的十六进制代码FFFF。例如,欧元符号的代码20AC |
| \v | 匹配纵向制表符(ASCII 11) |
| \w | 匹配字符,数字和下划线 |
| \W | 匹配匹配字符,数字和下划线意外的字符 |
| \xnn | 匹配特殊字符,nn代表十六进制的ASCII 码 |
| .* | 匹配任意数量的字符(包括0个字符) |
限定符
上面表格中列出的每个通配符,可以代表一个确定的字符。使用限定符,可以精确地确定字符的出现频率。例如”\d{1,3}”代表一个数字字符出现1到3次。
| 元素 | 描述 |
| * | 匹配一个元素0次或者多次(最大限度地匹配) |
| *? | 匹配前面的元素零次或者多次(最小限度地匹配) |
| .* | 匹配任意个数的任意字符(包括0个字符) |
| ? | 匹配上一个元素0次或者1次(最大限度地匹配) |
| ?? | 匹配上一个元素0次或者1次(最小限度地匹配) |
| {n,} | 匹配上一个元素至少n次 |
| {n,m} | 匹配上一个元素n至m次 |
| {n} | 匹配上一个元素n次 |
| + | 匹配上一个元素一次或者多次 |
识别IP地址
类似IP地址的模式通过正则表达式来描述比简单的通配符字符会更加精确。通常会使用字符和量词结合,来指定某个具体的字符应当出现,以及出现的频率:
| 元素 | 描述 |
| $ | 在字符串的结尾匹配 |
| \A | 在字符串的开始匹配(包含多行文本) |
| \b | 在单词的边界匹配 |
| \B | 不在单词的边界匹配 |
| \Z | 在字符串的结尾匹配(包含多行文本) |
| ^ | 在字符串的开始匹配 |
|
1
2
3
4
5
6
7
8
9
10
|
$parttern="\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b""192.168.10.3" -match $parttern"a.168.10.3" -match $parttern"1000.168.10.3" -match $parttern<# #输出 #True #False #False#> |
这里模式被描述成4个类似的数字,每个数字以圆句句号分割,每个数字的位数介于1-3。另外在开始和结尾可以包含空格。当这些数字处于0到255之间时,IP的验证还是挺完美的。
但是当某个数字超过255时,则显得无能为力。
|
1
2
3
4
5
6
|
$parttern="\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b""255.489.921.321" -match $parttern<# #输出: #True#> |
验证Email格式
如果你想验证用户提供的E-Mail地址是不是一个合法电子邮件格式,可以使用下面的正则表达式:
|
1
2
3
4
5
6
7
8
|
$parttern = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b""mosser@pstips.net" -match $parttern".@ ." -match $parttern<# #输出: #True #False#> |
无论什么时候,希望一个表达式以一个单独的“单词”在文本中出现,可以使用分隔符:单词边界(定位符”\b”),这样正则表达式就会知道你感兴趣的是字符串中除去那些白空格(像空格,制表符,换行符)以外的字符。
紧随其后的正则表达式指定的是那些字符可以被允许出现在电子邮件地址中。被允许的字符放在方括号中,由字符区间(例如:A-Z0-9″)和单个字符(例如:”._%+-“)构成。“+”放在方括号后面是一个限定符,意味着前面的字符至少出现一次。当然你可以规定出现更多的字符。
接下来的是“@”,@之后的字符可以和@前面的一样。在电子邮件地址后面必须出现一个圆句点。但是因为圆句点属于特殊字符,所以加了反斜杠转义,让它以普通字符的形式出现在正则表达式中。
在圆句点之后是域标识,它们完成由字母([A-Z])组成,限定符({2,4})紧随其后指定域标识符应当至少由2个字符,至多由4个字符组成。
但是上面的正则表达式仍旧有一些瑕疵:
|
1
2
3
4
5
6
7
8
9
|
$parttern = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$""请邮件联系: mosser@pstips.net 好不好?" -match $parttern"mosser@pstips.net" -match $parttern<# #输出: #False #True#> |
PowerShell正则表达式(一) 定义模式的更多相关文章
- day319 1、正则表达式的定义及使用 2、Date类的用法 3、Calendar类的用法
1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法 一.正则表达式 ###01正则表达式的概念和作用* A: 正则表达式的概念和作用* a: 正则表达式的概述* 正则表达式也是 ...
- Java经典实例:使用正则表达式:测试模式
import java.util.regex.Pattern; /** * Created by Frank * 在Java中使用正则表达式:测试模式 */ public class RESimple ...
- RegExp正则表达式(三)–js中正则表达式的定义
在js中,RegExp正则表达式的定义有两种方式:一种是普通方式,另一种是构造函数方式.无论是那种定义正则表达式的方式,它们都会返回RegExp对象. 普通方式定义正则表达式的格式 语法: var 变 ...
- JavaScript 正则表达式——预定义类,边界,量词,贪婪模式,非贪婪模式,分组,前瞻
㈠预定义类 示例:匹配一个ab+数字+任意字符的字符串:ab\d. ㈡边界 正则表达式常用的边界匹配字符 ⑴示例1:第一个是没写单词边界 第二个是加上字符边界的效 ...
- JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组
JavaScript基础学习 学习js的基础很重要,可以让自己有更多的技能.我相信这个以后就会用到. Eg:点击选择框,在div中显示出选择的数量 window.onload = function() ...
- 通过 Powershell 来调整 ARM 模式下虚拟机的尺寸
需求描述 在部署完 ARM 模式的虚拟机以后,可以通过 PowerShell 命令来调整虚拟机的尺寸,以下是通过 PowerShell 命令来调整 ARM 模式的虚拟机尺寸. Note 本文只限于 A ...
- 【虚拟机-部署】通过 Powershell 来调整 ARM 模式下虚拟机的尺寸
需求描述 在部署完 ARM 模式的虚拟机以后,可以通过 PowerShell 命令来调整虚拟机的尺寸,以下是通过 PowerShell 命令来调整 ARM 模式的虚拟机尺寸. Note 本文只限于 A ...
- 正则表达式 U贪婪模式
<?php/*模式修正符号: i u 位置:"//模式修正符位置" 可以一次使用一个,也可以一次使用多个 对整个正则表达式调优用的,也可以说是对正则表达式功能的扩展 &quo ...
- PowerShell自定义函数定义及调用
PowerShell是一种命令集,也有自己的语法定义及函数.本文主要介绍如何自定义powershell函数及如何调用,当初在写PowerShell自定义函数的时候查阅了很多资料都没找到如何调用自定义函 ...
随机推荐
- 黑马程序员_JavaIO流(二)
字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应类: BufferedWriter BufferedReader 缓冲区要结合流才可以使用. 在流的基础上对流的功能进行了增强. Buffer ...
- uva 10859 - Placing Lampposts dp
题意: 有n个节点,m条边,无向无环图,求最少点覆盖,并且在同样点数下保证被覆盖两次的变最多 分析: 1.统一化目标,本题需要优化目标有两个,一个最小灯数a,一个最大双覆盖边数b,一大一小,应该归一成 ...
- puppet aix之自动化用户管理
一. 用户组的管理 (一) Puppet组管理特性 1. manages_aix_lam 用来管理AIX的LAM(Loadable Authentication Module)系统. 2 ...
- ik分词
Ik中文分词的引入 ik版本号:IK Analyzer 2012FF_hf1 下载地址: http://code.google.com/p/ik-analyzer/downloads/list 解压 ...
- jQuery的简单应用
时隔多日, 终于我又有时间来浏览些新知识了, 并不是偷懒什么的, 只是真的好忙, 看似闲暇的时间总是冒出一些模糊而又不得不做的事情, 今日终于我又有时间了, 可以看下jQuery了, 并根据自己的了 ...
- 配置NFS服务
1. NFS配置,需要安装哪些包?nfs-utils 和 rpcbind2. 如果不开启rpcbind服务,就启动NFS,会怎么样?如果不开启rpcbind服务,会报错:rpc.nfsd: writ ...
- Action<T> 和 Func<T> 委托
概述: 除了为每个参数和返回类型定义一个新委托类型之外,可以使用Action<T> 和 Func<T> 委托. Action<T> Action<T>委 ...
- Objective-C 引用计数:不讲用法,只说原理
本文所使用的源码为 objc4-647 和 CF-1153.18 实际上这是我本周实习周报的一部分,写的比较仓促,如有差错还请多多指正. 不讲用法,只说原理. 引用计数如何存储 有些对象如果支持使用 ...
- JSTL核心标签库
1.set:给web域设置值的 <c:set var="lang" value="Java" scope="page">< ...
- dinic网络流模板
src:源点 sink:汇点 #include<queue> #include<iostream> #include<string.h> #include<s ...