通配符与正则表达式[]与{}

博客访问: 78588
博文数量: 35
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
今儿个才知道SQL语句还可以搭配正则表达式作为查询条件,很是有用。
REGEXP_LIKE(匹配)REGEXP_INSTR (包含)REGEXP_REPLACE(替换)REGEXP_SUBSTR(提取)
使表达式定位至一行的开头
使表达式定位至一行的末尾
匹配 0 次或更多次
匹配 0 次或 1 次
匹配 1 次或更多次
正好匹配 m 次
至少匹配 m 次
至少匹配 m 次但不超过 n 次
小写字母字符
大写字母字符
字母数字字符
空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
控制字符(禁止打印)
可打印字符
分隔替换选项,通常与分组操作符 () 一起使用
将子表达式分组为一个替换单元、量词单元或后向引用单元(参见“”部分)
表示一个字符列表;一个字符列表中的大多数元字符(除字符类、^ 和 - 元字符之外)被理解为文字
REGEXP_LIKE(source_string, pattern[, match_parameter])
source_string 支持字符数据类型(CHAR、VARCHAR2、CLOB、NCHAR、NVARCHAR2 和 NCLOB,但不包括 LONG)。pattern 参数是正则表达式的另一个名称。match_parameter 允许可选的参数(如处理换行符、保留多行格式化以及提供对区分大小写的控制)。
REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])
该函数查找 pattern ,并返回该模式的第一个位置。您可以随意指定您想要开始搜索的 start_position。 occurrence 参数默认为 1,除非您指定您要查找接下来出现的一个模式。return_option 的默认值为 0,它返回该模式的起始位置;值为 1 则返回符合匹配条件的下一个字符的起始位置。
必须匹配的空白
POSIX 数字类
字符列表的结尾
字符列表正好重复出现 5 次
子表达式的开头
一个文字连字符,因为它不是一个字符列表内的范围元字符
字符列表的开头
POSIX [:digit:]类
字符列表的开头
字符列表的结尾
字符列表正好重复出现 4 次
结束圆括号,结束子表达式
? 量词匹配分组的子表达式 0 或 1 次,从而使得 4 位代码可选
定位元字符,指示行尾
REGEXP_SUBSTR(source_string, pattern[, position [, occurrence[, match_parameter]]])
REGEXP_SUBSTR 函数返回匹配模式的子字符串。
REGEXP_REPLACE(source_string, pattern[, replace_string [, position[,occurrence, [match_parameter]]]])
该函数用一个指定的 replace_string 来替换匹配的模式,从而允许复杂的“搜索并替换”操作。
紧跟着一个 1 到 9 之间的数字,反斜线匹配之前的用括号括起来的第 digit 个子表达式。(注意:反斜线在正则表达式中有另一种意义,取决于上下文,它还可能表示 Escape 字符。
正则表达式项目
第一个子表达式的开头
匹配除换行符之外的任意单字符
重复操作符,匹配之前的 . 元字符 0 到 n 次
第一个子表达式的结尾;匹配结果在 \1中获取(在这个例子中,结果为 Ellen。)
必须存在的空白
第二个子表达式的开头
匹配除换行符之外的任意单个字符
重复操作符,匹配之前的 . 元字符 0 到 n 次
第二个子表达式的结尾;匹配结果在 \2中获取(在这个例子中,结果为 Hildi。)
第三个子表达式的开头
匹配除换行符之外的任意单字符
重复操作符,匹配之前的 . 元字符 0 到 n 次
第三个子表达式的结尾;匹配结果在 \3中获取(在这个例子中,结果为 Smith。)
正则表达式项目
行首字符(正则表达式在匹配之前不能有任何前导字符。)
开始子表达式并列出用 | 元字符分开的可替换选项
字符列表的开头
POSIX 数字类
字符列表的结尾
字符列表正好重复出现 3 次
字符列表的开头
POSIX 数字类
字符列表的结尾
字符列表正好重复出现 2 次
另一个连字符
字符列表的开头
POSIX 数字类
字符列表的结尾
字符列表正好重复出现 4 次
替换元字符;结束第一个选项并开始下一个替换表达式
字符列表的开头
POSIX 数字类
字符列表的结尾
字符列表正好重复出现 9 次
结束圆括号,结束用于替换的子表达式组
定位元字符,指示行尾;没有额外的字符能够符合模式
SELECT * FORM. tKHXX where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$'针对这个表达式解释一下^ 表示开始$ 表示结束[]内部为匹配范围{}里的内容表时个数,有几位
号码的特点是以 1开头接着是3或5再加9位的数字 所以这么理解1开头 表达式为 ^[1]{1} 意为 开始1位里包含13或5 表达式为 [35]{1}9位数字结束 为: [[:digit:]]{9}$ 这里[:digit:]为特殊写法,代表为数字 再加个结束符$
阅读(16787) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。2011年8月 总版技术专家分月排行榜第三
2012年10月 荣获微软MVP称号2011年10月 荣获微软MVP称号
本帖子已过去太久远了,不再提供回复功能。推荐这篇日记的豆列
······PHP与正则表达系列之一: PHP中的正则表达式
今天起,会开始弄一个PHP教程系列文章. 主要是针对正则表达式的。
大概的内容排序是这样安排的:
1.& PHP 中的正则表达式
2.& 八个实用的PHP正则表达式
3.& 如何书写更易阅读的PHP正则表达式
4.& 半小时精通正则表达式
5.& 正则在文章采集系统中的应用及常见问题答疑
6.& ...更多策划中
文章内容来源方面,有本站旧文重新整理而来,也有翻译英文文献而来(感谢在加拿大的!oEL同学),还有些是个人心得。
个人能力有限,肯定有一些错误,发现的朋友请给予提醒以及时更正. 不至误导新手. 如果文章能给大家一些参考,就很满足了。
PHP与正则表达系列之: PHP 中的正则表达式
正则表达式简介及正则表达式在PHP中的作用
正则表达式是一种表示规则的途经,在 PHP 中利用这些规则可以让你灵活变通地匹配、检验、替换以及字符串。本文涉及到 PCRE 的基础,以及如何使用 preg_match(),preg_replace(),and preg_split() 函数。
接下来就让我们从实例循序渐进地开始学习如何使用这些函数。
规则匹配 preg_match
利用 preg_match(),我们可以完成字符串的规则匹配。如果找到一个匹配,preg_match() 函数返回 1,否则返回 0。还有一个可选的第三参数可以让你把匹配的部分存在一个数组中。在验证数据时这个功能可以变得非常有用。
$string = &football&;if (preg_match('/foo/', $string)) {// 匹配正确}
&上面的例子将成功匹配,因为单词 football 里面包含 foo。现在我们来试一个更复杂的,例如验证一个 Email 地址。
$string = &first.last@domain.uno.dos&;if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$string)) {// 验证Email地址}
这个例子将验证出此 Email 地址为正确格式。现在让我们来看看这段正则表达式所代表的各种规则。
PCRE 顾名思义,与在 Perl 中的正则表达式有相同的语法,所以每段正则表达式必须要有一对定界符。我们一般使用 / 为定界符。
开头的 ^ 和结尾的 $ 让PHP从字符串开头检查到结尾。假使没有 $,程序仍会匹配到 Email 的末尾。
[ 和 ] 被用来限制许可输入类型。例如 a-z 允许所有的小写字母,A-Z 允许所有的大写字母,0-9 所有数字,等等,以及更多其他类型。
{ 和 } 被用来限制期望的字符数。例如 {2,4} 表示字符串的每一节可以有 2-4 字符长度,像是 . 或 .info。在这里, &.& 并不算一个字符,因为 {2,4} 之前定义的许可输入类型只有大小写字母,故此段只匹配大小写字母
( 和 ) 被用来合并小节,并定义字符串中必须存在的字符。(a|b|c) 能够匹配 a 或 b 或 c。
(.) 将匹配所有字符,而 [.] 只匹配 &.& 本身。
要使用一些符号本身,必须在前增加一个 。这些字符有: ( ) [ ] . * ? + ^ | $
规则替换 preg_replace
preg_replace 允许你替换字符串中匹配到你定义的正则表达式。一个简单的注释移除功能:
preg_replace('[(/*)+.+(*/)]', '', $val);
这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -& '')。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。
规则分割preg_split
preg_split 可以将整段字符串按匹配到的正则表达式分割成 1、2或更多字符的多段。比如获取标签,无论是用空格还是逗号分隔的:
$tags = preg_split('/[,]/', 'my,tags,unevenly,spaced');print_r($tags);
正则表达式是一个很实用的技巧,让你可以专注于所期望得到的内容。
但有时候一段正则表达式并不能让你如愿以偿得到预期的结果是件很烦人的事,所以我将在本系列的第二篇文章附上一些简单的语法指南希望能够帮到大家。
附:PCRE 语法指南
/ 定界符^ 字符串头$ 字符串尾[a-z] 所有小写字母[A-Z] 所有大写字母[0-9] 所有数字? 零或一个紧接前的字符* 零或多个紧接前的字符+ 一或多个紧接前的字符{4} 4个紧接前的字符{4,8} 4-8个紧接前的字符. 任意字符(red|green|blue) Red 或 green 或 blue(红 或 绿 或 蓝)s 空格特殊字符(需要在前加 )( ) [ ] . * ? + ^ | $
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章
seajs.config({
base: "/resource/passapi/scripts/"
seajs.use('seajs/seajs-css');
seajs.use(['artdialog/src/dialog-plus'], function (dialog) {
$('#favorite').on('click', function(){
$.getJSON('/passapi.ashx?op=userstatus&callback=?', function(data){
if (data.status == 1) {
var _this = $('#favorite').find('span');
$.getJSON('/?app=favorite&controller=favorite&action=add&jsoncallback=?&contentid='+contentid, function(json){
if(json.state){
_this.html('

我要回帖

更多关于 正则表达式 与或 的文章

 

随机推荐