首页编程精通正则表达式(re正则表达式,这个代码什么意思(初学者))

精通正则表达式(re正则表达式,这个代码什么意思(初学者))

编程之家2023-11-05194次浏览

各位老铁们好,相信很多人对精通正则表达式都不是特别的了解,因此呢,今天就来为大家分享下关于精通正则表达式以及re正则表达式,这个代码什么意思(初学者)的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

精通正则表达式(re正则表达式,这个代码什么意思(初学者))

C#中的正则表达式和js中的是否一样

正则表达式只是一个系统的概念,然后具体语言再对其实现。

其实两者是不同的。但是由于使用者的习惯,大部分的时间是相同的。

在js中正则表达式是一个类型。可以直接使用var s=/pattern/;这样的形式实现。所以说在js只直接是一种类型的。象用其他诸如字符串等类型一样使用他,只不过定界符不同。

而在C#本身是不存在的,直接使用的是一种类库中的一个类实现的。也就是说正则表达式其实只是类库中的一个类而已。然后对这个类定义有几个静态变量,变量,方法与函数等等,你只要知道他是一个类就可以了!

至于相同的部分那就是大部分的元字符表示法,比如^表示开始,$表示结尾等等,也就是说他们大部分相同的地方就是对于元数据的定义,\d等等,这样你在不同的语言中,虽然实现不同,但对于元数据却使用相同的东西,以便于你的记忆,不必到各种语言中都再去学习了。

不同的是对于表达式的限定及扩展不一样的。在js中你可以直接跟在后面实现,如:

精通正则表达式(re正则表达式,这个代码什么意思(初学者))

var s=/pattern/igm;

后边的i表示忽略大小写,g表示全局,m表示多行。

但在C#中利用的是另一个参数,regexoptions,枚举型的,除了这些这外还有对编译等等,比js要多。而对于运算符如|选择?等都是一样的!也就是说,js中的写法在C#中一定能用,除模式限制部分,而在C#中的写法大部时间js也能用。

表达式还是要学习的,不是学的元数据表示,而是对于那个类语法的学习,比如在js中存在test方法,就是测试匹配,但不设置变量,而在C#中没有,有一个isMatch与之相同功能。不学习这些东西你怎么会知道呢?所以必须要学习的,而且顺便说一下C#上的正则表达式比js强多了,还有很多的东西是js正则表达式中所没有的,比如动态正则表达式,而在js中是不可能实现的。在C#中却可以实现。如果不学习,那么你的表达式也只能处于常用的基础上!

所以很不暂同一楼的观点。

正则表达式入门经典的相关图书

形式语义学基础 [专著]/陈意云编著,合肥,中国科学技术大学出版社,1994.3,7-312-00533-0,5,237页26cm,TP301.2/C49

精通正则表达式(re正则表达式,这个代码什么意思(初学者))

形式语义学的稳定论域理论/陈仪香著,北京,科学出版社,2003,7-03-011264-4,205页20cm,TP301.2/C497

Combinatorics on Words [专著]:Progress and Perspectives/Edited by Larry J.Cummings,Ontario,Academic Press Canada,1983,0-12-198820-1,ix,405p.21cm,TP301.2/C971

Languages, compilers, and tools for embedded systems:ACM SIGPLAN Workshop LCTES 2000, Vancouver, Canada, June 2000: proceedings/Jack Davidson, Sang Lyul Min(eds.),N.Y.,Tata Institute of Fundamental Research,2001.,3-540-41781-8,viii,220p.fig.,tab.,TP301.2/D252

精通正则表达式:第3版/(美)Jeffrey E.F.Friedl著;余晟译,北京,电子工业出版社,2007,978-7-121-04684-1,515页25cm,TP301.2/F831

正则表达式经典实例/(美)Jan Goyvaerts,(美)Steven Levithan著;郭耀译,北京,人民邮电出版社,2010,978-7-115-22832-1,457页24cm,TP301.2/G722

形式语言与自动机导论:英文版/(美)Peter Linz著,北京,机械工业出版社,2004,7-111-15310-3,15,410页24cm,TP301.2/L610

形式语言与自动机导论/(美)Peter Linz著;孙家骕等译,北京,机械工业出版社,2005,7-111-16788-0,289页26cm,TP301.2/L610

Computer Literacy:Survival kit,for the Apple II,lle Family of Computers/Arthur Luehrmann,Herbert Peckham,Maidenhead,McGraw-Hill Book Co.,1984,0-07-049206-9,xiii,417p.ill.23cm,TP301.2/L926

re正则表达式,这个代码什么意思(初学者)

这个正则就是匹配数字;

-?表示前面可以有一个可选的减号;

\d+表示一到多个数字,(-?\d+)这个表示整数部分;

(\.\d+)?表示一个小数点跟多个数字,?表示前面这部分是可选的,这部分匹配一个可选的小数部分;

^(\d)$就是0-9的任意一个数字;

^表示以...开头,\d表示0-9的数字,$表示以...结尾;

所以这个就是表示单个数字了。

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则表达式原理

首先先讲解下正则表达式的基础知识:

1.字符串的组成

对于字符串”123“而言,包括三个字符四个位置。如下图所示:

2.占有字符和零宽度

正则表达式匹配过程中,如果子表达式匹配到东西,而并非是一个位置,并最终保存到匹配的结果当中。这样的就称为占有字符,而只匹配一个位置,或者是匹配的内容并不保存到匹配结果中,这种就称作零宽度,后续会讲到的零宽度断言等。占有字符是互斥的,零宽度是非互斥的。也就是一个字符,同一时间只能由一个子表达式匹配,而一个位置,却可以同时由多个零宽度的子表达式匹配。

3.控制权和传动

正则表达式由左到右依次进行匹配,通常情况下是由一个表达式取得控制权,从字符串的的某个位置进行匹配,一个子表达式开始尝试匹配的位置,是从前一子表达匹配成功的结束位置开始的(例如:(表达式一)(表达式二)意思就是表达式一匹配完成后才能匹配表达式二,而匹配表达式二的位置是从表达式一的位置匹配结束后的位置开始)。如果表达式一是零宽度,那表达式一匹配完成后,表达式二匹配的位置还是原来表达式以匹配的位置。也就是说它匹配开始和结束的位置是同一个。

举一个简单的例子进行说明:正则表达式:123

源数据:123

讲解:首先正则表达式是从最左侧开始进行匹配,也就是位置0处进行匹配,首先得到控制权的是正则表达式中的“1”,而不是源数据中的“1”,匹配源数据中的“1”,匹配成功,将源数据的“1”进行保存到匹配的结果当中,这就表明它占有了一个字符,接下来就将控制权传给正则表达式中的“2”,匹配的位置变成了位置1,匹配源数据中的“2”,匹配成功,将控制权又传动给了正则表达式的“3”,这时候匹配的位置变成了位置2,这时候就会将源数据中的“3”进行匹配。又有正则表达式“3”进行传动控制权,发现已经到了正则表达式的末尾,正则表达式结束。

OK,关于精通正则表达式和re正则表达式,这个代码什么意思(初学者)的内容到此结束了,希望对大家有所帮助。

sitemap 网站地图sitemap怎么查看jcreator,JCreator是什么