正则表达式,又称规则表达式。是计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串 *** 作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
扩展资料
正则表达式的作用:
1、匹配
检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:
String str="abc";
String reg="[a-zA-Z]\\d";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=strmatches(reg);//返回结果为true。
2、切割
所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:
String str="zhangsan,lishi,wangwu"。
String reg=",";//表示以逗号作为切割符。
String[] arr=strsplit(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。
3、替换
即将字符串中符合规则的字符替换成指定字符,如:
String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。
strreplaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。
参考资料来源:百度百科-正则表达式
表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义。对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行多少次均是如此。
如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。例如
var regx=/user/d/;
var str=“user18dsdfuser2dsfsd”;
var rs=regxexec(str);//此时rs的值为{user1}
var rs2=regxexec(str);//此时rs的值依然为{user1}
如果regx=/user/d/g;则rs的值为{user1},rs2的值为{user2}
通过这个例子说明:对于exec方法,表达式加入了g,并不是说执行exec方法就可以返回所有的匹配,而是说加入了g之后,我可以通过某种方式得到所有的匹配,这里的“方式”对于exec而言,就是依次执行这个方法即可。
对于表达式对象的test方法,加入g于不加上g没有什么区别。 对于String对象的match方法,不加入g,也只是返回第一个匹配。
一直执行match方法也总是返回第一个匹配,加入g,则一次返回所有的匹配(注意这与表达式对象的exec方法不同,对于exec而言,表达式即使加上了g,也不会一次返回所有的匹配)。
例如:
var regx=/user/d/;
var str=“user1sdfsffuser2dfsdf”;
var rs=strmatch(regx);//此时rs的值为{user1}
var rs2=strmatch(regx);//此时rs的值依然为{user1}
如果regx=/user/d/g,则rs的值为{user1,user2},rs2的值也为{user1,user2}
3,对于String对象的replace方法,表达式不加入g,则只替换第一个匹配,如果加入g,则替换所有匹配。(开头的三道测试题能很好的说明这一点) ,对于String对象的split方法,加上g与不加g是一样的,即:
var sep=/user/d/;
var array=“user1dfsfuser2dfsf”split(sep);
则array的值为{dfsf, dfsf}
此时sep=/user/d/g,返回值是一样的。
对于String对象的search方法,加不加g也是一样的
扩展资料
正则表达中其他字符的表达方式如下:
1,\:将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。
2,^:匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
3,$:匹配输入行尾。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
4,:匹配前面的子表达式任意次。例如,zo能匹配“z”,也能匹配“zo”以及“zoo”。等价于{0,}。
5,+:匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}
6,{n,}:n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o”。
7,(pattern):匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
8,x|y:匹配x或y。例如,“z|food”能匹配“z”或“food”(此处请谨慎)。“[zf]ood”则匹配“zood”或“food”。
9,[xyz]:字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
10,[^xyz]:负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”任一字符。
11,[a-z]:字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
12,[^a-z]:负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
13,\B:匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
14,\cx:匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
来自:>Python OS模块1重命名:osrename(old, new)
2删除:osremove(file)
3列出目录下的 文件 :oslistdir(path)
4获取当前工作目录:osgetcwd()
5改变工作目录:oschdir(newdir)
6创建多级目录:osmakedirs(r"c:/python /test")
7创建单个目录:osmkdir("test")
8删除多个目录:osremovedirs(r"c:/python") #删除所给路径最后一个目录下所有空目录。
9删除单个目录:osrmdir("test")
10获取文件属性:osstat(file)
11修改文件权限与时间戳:oschmod(file)
12执行 *** 作系统 命令:ossystem("dir")
13启动新进程:osexec(), osexecvp()
14在后台执行程序:osspawnv()
15终止当前进程:osexit(), os_exit()
16分离文件名:ospathsplit(r"c:/python/ hellopy ") –> ("c://python", " hellopy ")
17分离扩展名:ospathsplitext(r"c:/python/ hellopy ") –> ("c://python//hello", "py")
18获取路径名:ospathdirname(r"c:/python/ hellopy ") –> "c://python"
19获取文件名:ospathbasename(r"r:/python/hellopy") –> "hellopy"
20判断文件是否存在:ospathexists(r"c:/python/hellopy") –> True
21判断是否是绝对路径:ospathisabs(r"/python/") –> False
22判断是否是目录:ospathisdir(r"c:/python") –> True
23判断是否是文件:ospathisfile(r"c:/python/hellopy") –> True
24判断是否是链接文件:ospathislink(r"c:/python/hellopy") –> False
25获取文件大小:ospathgetsize(filename)
26:osismount("c://") –> True
27搜索目录下的所有文件:ospathwalk()
[2shutil]
1复制单个文件:shultilcopy(oldfile, newfle)
2复制整个目录树:shultilcopytree(r"/setup", r"/backup")
3删除整个目录树:shultilrmtree(r"/backup")
[3tempfile]
1创建一个唯一的临时文件:tempfilemktemp() –> filename
2打开临时文件:tempfileTemporaryFile()
[4StringIO] #cStringIO是StringIO模块的快速实现模块
1创建内存 文件并写入初始数据 :f = StringIOStringIO("Hello world!")
2读入内存文件数据:print fread() #或print fgetvalue() –> Hello world!
3想内存文件写入数据:fwrite("Good day!")
4关闭内存文件:fclose()
rm(list=ls())
path = 'J:/lab/EX29 --在R语言中进行文件(夹) *** 作'
setwd(path)
cat("file A\n", file="A") #创建一个文件A,文件内容是'file A','\n'表示换行,这是一个很好的习惯
cat("file B\n", file="B") #创建一个文件B
fileappend("A", "B") #将文件B的内容附到A内容的后面,注意没有空行
filecreate("A") #创建一个文件A, 注意会覆盖原来的文件
fileappend("A", rep("B", 10)) #将文件B的内容复制10便,并先后附到文件A内容后
fileshow("A") #新开工作窗口显示文件A的内容
filecopy("A", "C") #复制文件A保存为C文件,同一个文件夹
dircreate("tmp") #创建名为tmp的文件夹
filecopy(c("A", "B"), "tmp") #将文件夹拷贝到tmp文件夹中
listfiles("tmp") #查看文件夹tmp中的文件名
unlink("tmp", recursive=F) #如果文件夹tmp为空,删除文件夹tmp
unlink("tmp", recursive=TRUE) #删除文件夹tmp,如果其中有文件一并删除
fileremove("A", "B", "C") #移除三个文件mshta javascript:windowexecScript("Dim fso:Set fso = CreateObject('scriptingfilesystemobject'):With fsoOpenTextFile('undetxt', 2, True, True):Write ChrW(10):End With:windowclose","vbs")
将上面的一整句话保存为bat运行即可。输出文件为undetxt,可以自己改,保证只输出一个0a
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)