- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章浅谈正则表达式(Regular Expression)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、什么是正则表达式?
简单的说:正则表达式(Regular Expression)是一种处理字符串匹配的语言; 。
正则表达式描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串,对匹配到的子串进行“取出”或“替换”操作.
2、正则表达式的应用 。
正则表达式在实际的开发过程中非常实用,能够快速解决一些复杂的字符串处理问题,下面我对正则表达式的应用做一些简单分类:
第一种:数据验证 比如,你要验证一个字符串是否是正确的EMail,Telphone,Ip等等,那么采用正则表达式就好非常方便.
第二种:内容查找 比如,你要抓取一个网页的图片,那么你肯定要找到<img>标签,这时候用正则表达式就可以精准的匹配到.
第三种:内容替换 比如,你要把手机号码中间四位隐藏掉变成这种模式,123****4567,那么采用正则表达式也会非常方便.
3、正则表达式有哪些内容 。
下面我将简单的介绍一下正则表达式:
1、 正则表达式的几个重要的概念 •子表达式:在正则表达式中,如果使用"()"括起来的内容,称之为“子表达式” •捕获:子表达式匹配到的结果会被系统放在缓冲区中,这个过程,我们称之为“捕获” •反向引用:我们使用"\n",其中n是数字,表示引用之前某个缓冲区之间的内容,我们称之为“反向引用” 2、数量限定符 •X+ 表示:1或多个 •X* 表示:0或多个 •X? 表示:0或1个 •X{n} 表示: n个 •X{n,} 表示:至少n个 •X{n,m} 表示:n至m个,贪婪原则,会尽可能匹配多个;如果在后面加个?,则为非贪婪原则 注:X表示要查找的字符 。
3、 字符限定符 •\d 表示:匹配一个数字字符,[0-9] •\D 表示:匹配一个非数字字符,[^0-9] •\w 表示:匹配包括下划线在内的单词字符,[0-9a-zA-Z_] •\W 表示:匹配任何非单词字符,[^0-9a-zA-Z_] •\s 表示:匹配任何空白字符,空格、回车、制表符 •\S 表示:匹配任何非空白字符 •. 表示:匹配任何单个字符 此外还有以下几种:
范围字符:[a-z]、[A-Z]、[0-9]、[0-9a-z]、[0-9a-zA-Z] 任意字符:[abcd]、[1234] 非在内的字符:[^a-z]、[^0-9]、[^abcd] 。
4、 定位符 •^ 表示:开头标识 •$ 表示:结尾标识 •\b 表示:单词边界 •\B 表示:非单词边界 5、转义符 •\ 用于匹配某些特殊字符 6、选择匹配符 •| 可以匹配多个规则 7、特殊用法 •(?=) : 正向预查:匹配以指定内容结束的字符串 •(?!) : 负向预查:匹配不是以指定内容结束的字符串 •(?:) : 不把选择匹配符的内容放到缓冲区 。
4、正则表达式在Javascript下的使用方法 。
在Javascript下使用正则表达式,有两种方法
第一种方法:使用RegExp类 提供的方法有:
•test(str): 在字符串匹配是否有匹配模式的字符串,返回true/false •exec(str): 返回匹配模式匹配到的字符串,如果有,返回相应的字符串,无,返回null; //如果正则表达式中有子表达式,使用exec方法时 。
//返回的是:result[0] = 匹配结果 , result[1] = 子表达式1的匹配结果 …… 。
第二种方法是:使用String类 提供的方法有:
•search : 返回匹配模式的字符串出现的位置,如果没有,返回-1 •match : 返回匹配模式匹配到的字符串,如果有,返回数组,无,返回null •replace : 将匹配模式匹配到的字符串进行替换 •split : 将字符串已匹配模式为分隔符进行字符串分隔,返回数组 。
5、正则表达式在PHP下的使用方法 。
PHP下有两种使用正则表达式的函数:
第一种是:Perl正则表达式函数 提供的方法有:
•preg_grep -- 返回与模式匹配的数组单元 •preg_match_all -- 进行全局正则表达式匹配 •preg_match -- 进行正则表达式匹配 •preg_quote -- 转义正则表达式字符 •preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换 •preg_replace -- 执行正则表达式的搜索和替换 •preg_split -- 用正则表达式分割字符串 第二种是:POSIX正则表达式函数 提供的方法有:
•ereg_replace -- 替换正则表达式 •ereg -- 正则表达式匹配 •eregi_replace -- 不区分大小写替换正则表达式 •eregi -- 不区分大小写的正则表达式匹配 •split -- 用正则表达式将字符串分割到数组中 •spliti -- 用正则表达式不区分大小写将字符串分割到数组中 •sql_regcase -- 产生用于不区分大小的匹配的正则表达式 。
6、总结 。
正则表达式就是我们实现某个功能的一个工具,这个工具:
1、功能强大 正则表达式中各种限定符的不同组合会实现不同的功能,有时实现一个复杂的功能需要编写很长的正则表达式,如何能精准匹配,这就要考验一个程序员的能力了.
2、简洁方便 平常我们在进行字符串内容查找,只能进行某个特定字符串的查找,但是正则表达式可以帮助我们进行模糊查找,更快更方便,仅仅需要一个正则表达式串.
3、各种语言基本上都支持 目前如JAVA、PHP、Javascript、C#、C++等主流语言都支持正则表达式.
4、学习很简单,应用很高深 学习正则表达式很快也很简单,但是如何在实际开发中编写出高效地,精准地正则表达式,还是需要长时间的尝试和积累.
最后此篇关于浅谈正则表达式(Regular Expression)的文章就讲到这里了,如果你想了解更多关于浅谈正则表达式(Regular Expression)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!