正则表达式.号元字符(除了回车符\r和换行符\n)

来源:脚本之家  责任编辑:小易  

字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义

正则表达式.号元字符:

匹配以abc开头,以xyz结尾的字符串 abc.*xyz 等价于 abc(.*)xyz

点号(.)元字符可以匹配除了回车符(\r)和换行符(\n)之外的任意字符。

^+$分别表示:1、^:匹配输入字符串的开始位置。2、+:匹配前面的子表达式一次或多次(大于等于

语法结构:

正则表达式加上参数g之后,表明可以进行全局匹配。此外对于不同的对象方法,/g的含义有所不同,下面给出

构造函数方式:

表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最

new RegExp(".")

奇葩穿帮镜头,笑的不要不要的群演穿帮:后面的,你让让,这是在拍电视剧,你抢镜了,就是说你的,快点让一下。时间硬伤:明朝的时候才有玉米传过中国,但是剧中是南北朝,那个时候是没有玉米,这可是提前出现了一千多年。这个向日葵的葵花籽是和玉米一起传到中国的,也是在宋末明初的时候,同样的历史常识错误,编剧犯了两次,应该打脸。不合逻辑:这位大哥说自己在这里被困了3年,可是明明扣子很松,估计是智商的问题才被困这3年吧??警察这样拿手枪,确定犯人会害怕吗??樊胜美在看哥哥发过来的信息,看远镜头并无不妥,?放大一看,信息却是37天前就收到的。张铁林的手表会不会是名牌?《择天记》,敢问坐在角落的那位大哥您是谁,为什

对象直接量方式:

在回答小便得问题以前必须谴责强烈的谴责小便,你这个问题问的有明显憋着坏呢?用宋小宝的话说:你看你那损出!赵四:你这么说话容易挨揍!只不过是一部手机,有什么优越感了!喜欢它的流畅,喜欢它的耐用,喜欢他的玩游戏流畅的感觉,我们买了一部自己需要的手机,有毛病吗!!看我们拿苹果,你们就那么自卑吗?一部手机能代表什么,我也想支持国产手机,如果功能和耐用都没毛病,我也会选择国产手机,我用过小米,小米note顶配刚刚出来我就买了,3099买的,这个价格买了一部什么样的手机,电池不到一年,30%电自动关机!外放音量小,锁核为了降温,玩游戏掉频掉到不听指令,照相模糊,各种各样的问题,折腾你没事跑跑米家,不是我不

[JavaScript] 纯文本查看 复制代码运行代码

聊到高品质绿松石,大部分玩友会首先想到高蓝高瓷,其实,还有一种玉化料也是极品之一。玉化料的瓷度高,料质莹润透亮,易盘玩,且产量稀有,下面无矩就给大家细讲一番玉化料。玉化松石瓷度高于普通瓷松,颜色沉稳清澈,表面观感温润,这种润不是浸泡湿水后呈现的润感,而是一种天然质地,看上去有饱满的光泽感和莹润感,让人产生一种柔和、油润的视觉体验。表面凝脂感强烈,充满了强烈的玉质感。为什么叫玉化?玉化这一词指出了绿松石的物理特性。我们知道,绿松石归属于玉石的范畴,但是它又属于半宝石,因为多数松石石性比较重,既没有翡翠的透明,又没有和田玉的油润。玉化这词就很形象地点出了绿松石“玉”和“石”两个特性。由石性较重转为

/./

浏览器支持:

临近9月,手机市场的硝烟味也更浓了。据《华尔街日报》的报道,新iPhone将会在9月12日正式发布。这或许是苹果保密工作做得最差的一次,新iPhone还没发布,就已经被人扒了个底朝天——新iPhone最后的悬念,或许只剩下名字了。无论是叫iPhone8,还是叫iPhonePro,其实都不太重要,因为当你在茫茫人海中看见它时,肯定一眼就能把它认出来。全赖这一块惹眼的「全面屏」。大家都知道新iPhone有一块「全面屏」,但「全面屏」从何而来却鲜有人知。(「全面屏」iPhone概念设计,图片来源:9To5Mac)手掌与大屏之间的矛盾不管是过去还是现在,「大屏幕」一直是手机的核心竞争力之一,屏幕越大,

IE浏览器支持此元字符。

火狐浏览器支持此元字符。

谷歌浏览器支持此元字符。

注意:

在IE9以上浏览器或者其他标准浏览器中,小数点能够匹配除了回车符(\r)和换行符(\n)之外的任意字符。

在IE8以下浏览器中,小数点能够匹配除了换行符(\n)之外的任意字符。

实例代码:

实例一:

var str="antzone<123"; var reg=new RegExp(".+"); console.log(str.match(reg));

以上代码可以匹配字符串中的所有字符。

实例二:

var str="antzone<123"; var reg=/.+/; console.log(str.match(reg));

以上代码可以实现上面同样的功能。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

正则表达式 换行符

换行符是\n

\r是回车符

你的图片里没有换行,是\n这2个字符,而不是新行

匹配换行符以外的任意字符的正则是:

[^\n]*

正则表达式问题:元字符“.”匹配的是什么?

点匹配除换行(\r\n)的单个字符。注意是单个字符,所有/t.t/不能匹配到 that

要匹配多个可以用+(大于等于1个)或者*(0或者多个),如 /t.+t/

也可以用{n}匹配具体个数。如/t.{2}t/ 可以匹配到that

正则表达式怎样匹配任意字符

在正则中,匹配任意字符,其实写法网上有很多,但因为各种软件或程序写法不支持等原因导致的问题,大家可以多研究。

今天在Java中想使用正则表达式来获取一段文本中的任意字符。于是很随意得就写出如下匹配规则:

(.*)

结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才发现正则表达式中,“.”(点符号)匹配的是除了换行符“\n”以外的所有字符。同时,手册上还有一句话:要匹配包括

'\n' 在内的任何字符,请使用像 '[.\n]' 的模式。于是我将正则表达式的匹配规则修改如下:

([.\n]*),当然,如果是在java程序中直接写到话,需要改为([.\\n]*)

结果再次运行程序,发现什么内容也取不到了。我百思不得其解,又将其修改为如下规则:

([.|\n]*) 以及 ([\n.]*)

结果还是不行,什么内容都取不到。看来点符号和换行符卯上劲了~

然后上网一查,虽然没有查出上述规则到底是什么地方出问题了,但是查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则:

([\s\S]*)

同时,也可以用 “([\d\D]*)”、“([\w\W]*)” 来表示。

在文本文件里,

这个表达式可以匹配所有的英文

/[ -~]/

这个表达式可以匹配所有的非英文(比如中文)

/[^ -~]/

/是VI里用的.

你在editplus或程序里不需要/

正则表达式中 var reg = /[.\n]/; 为什么不可以区配任何?

因为被中括号括起来的字符都是元字符,就是字符的原意,点在中括号中,只表示点,不表示除回车符外的任意字符,所以[.\n]只匹配点和换行符,不匹配其他任何字符.

如果要匹配任意字符可以用var reg=/.|(\r\n)/;,但是一般都用var reg=/[\s\S]/;,来表示任意字符,\s表示空格,制表符等空白字符,\S表示所有非空白字符,所以合起来表示所有字符.

注意你的正则表达式[.\n]只表示一个字符,如果表示任意字符组成的字符串,一般这么写var reg=/[\s\S]+/;,

正则表达式的符号

(摘自《正则表达式之道》)

正则表达式 由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,我们下面会给予解释。

在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式testing中没有包含任何元字符,它可以匹配testing和testing123等字符串,但是不能匹配Testing。

要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。 元字符 描述 \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 * 匹配前面的子表达式任意次。例如,zo*能匹配“z”,“zo”以及“zoo”,但是不匹配“bo”。*等价于{0,}。 + 匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。 {n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 {n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 {n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他*符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。 .点 匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。 (pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。 (?:pattern) 非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。 (?=pattern) 非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 (?!pattern) 非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。 (?<=pattern) 非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。 (?<!pattern) 非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。这个地方不正确,有问题 x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”(此处请谨慎)。“(z|f)ood”则匹配“zood”或“food”。 [xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。 [^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。 [a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。

注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身. [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。 \b 匹配一个单词边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的)。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 \B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 \cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。 \d 匹配一个数字字符。等价于[0-9]。 \D 匹配一个非数字字符。等价于[^0-9]。 \f 匹配一个换页符。等价于 和\cL。 \n 匹配一个换行符。等价于 和\cJ。 \r 匹配一个回车符。等价于 和\cM。 \s 匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 \S 匹配任何可见字符。等价于[^ \f\n\r\t\v]。 \t 匹配一个制表符。等价于 和\cI。 \v 匹配一个垂直制表符。等价于 和\cK。 \w 匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的单词字符使用Unicode字符集。 \W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。 \xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“ ”匹配“A”。“ 1”则等价于“ &1”。正则表达式中可以使用ASCII编码。 \num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。 \n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。 \nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。 \nml 如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。 \un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(&copy;)。 \p{P} 小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀。中括号内的“P”表示Unicode 字符集七个字符属性之一:标点字符。

其他六个属性:

L:字母;

M:标记符号(一般不会单独出现);

Z:分隔符(比如空格、换行等);

S:符号(比如数学符号、货币符号等);

N:数字(比如阿拉伯数字、罗马数字等);

C:其他字符。

*注:此语法部分语言不支持,例:javascript。 < >匹配词(word)的开始(<)和结束(>)。例如正则表达式<the>能够匹配字符串for the wise中的the,但是不能匹配字符串otherwise中的the。注意:这个元字符不是所有的软件都支持的。( )将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。|将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配it belongs to him和it belongs to her,但是不能匹配it belongs to them.。注意:这个元字符不是所有的软件都支持的。+匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、99、999等。注意:这个元字符不是所有的软件都支持的。?匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。{i} {i,j}匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]{3} 能够匹配字符A后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字最简单的元字符是点,它能够匹配任何单个字符(注意不包括换行符)。假定有个文件test.txt包含以下几行内容:

he is arat

he is in a rut

the food is Rotten

I like root beer

我们可以使用grep命令来测试我们的正则表达式,grep命令使用正则表达式去尝试匹配指定文件的每一行,并将至少有一处匹配表达式的所有行显示出来。命令

grep r.t test.txt

在test.txt文件中的每一行中搜索正则表达式r.t,并打印输出匹配的行。正则表达式r.t匹配一个r接着任何一个字符再接着一个t。所以它将匹配文件中的rat和rut,而不能匹配Rotten中的Rot,因为正则表达式是大小写敏感的。要想同时匹配大写和小写字母,应该使用字符区间元字符(方括号)。正则表达式[Rr]能够同时匹配R和r。所以,要想匹配一个大写或者小写的r接着任何一个字符再接着一个t就要使用这个表达式:[Rr].t。

要想匹配行首的字符要使用抑扬字符(^)——有时也被叫做插入符。例如,想找到text.txt中行首he打头的行,你可能会先用简单表达式he,但是这会匹配第三行的the,所以要使用正则表达式^he,它只匹配在行首出现的he。

有时候指定“除了×××都匹配”会比较容易达到目的,当抑扬字符(^)出方括号中时,它表示“排除”,例如要匹配he ,但是排除前面是t or s的情形(也就是the和she),可以使用:[^st]he。

可以使用方括号来指定多个字符区间。例如正则表达式[A-Za-z]匹配任何字母,包括大写和小写的;正则表达式[A-Za-z][A-Za-z]* 匹配一个字母后面接着0或者多个字母(大写或者小写)。当然我们也可以用元字符+做到同样的事情,也就是:[A-Za-z]+ ,和[A-Za-z][A-Za-z]*完全等价。但是要注意元字符+ 并不是所有支持正则表达式的程序都支持的。关于这一点可以参考后面的正则表达式语法支持情况。

要指定特定数量的匹配,要使用大括号(注意必须使用反斜杠来转义)。想匹配所有10和100的实例而排除1和 1000,可以使用:10\{1,2\},这个正则表达式匹配数字1后面跟着1或者2个0的模式。在这个元字符的使用中一个有用的变化是忽略第二个数字,例如正则表达式0\{3,\} 将匹配至少3个连续的0。

例1

将所有方法foo(a,b,c)的实例改为foo(b,a,c)。这里a、b和c可以是任何提供给方法foo()的参数。也就是说我们要实现这样的转换:

之前 之后

foo(10,7,2) foo(7,10,2)

foo(x+13,y-2,10) foo(y-2,x+13,10)

foo( bar(8), x+y+z, 5) foo( x+y+z, bar(8), 5)

下面这条替换命令能够实现这一魔法:

:%s/foo(\([^,]*\),\([^,]*\),\([^,)]*\))/foo(\2,\1,\3)/g

让我们把它打散来加以分析。写出这个表达式的基本思路是找出foo()和它的括号中的三个参数的位置。第一个参数是用这个表达式来识别的::\([^,]*\),我们可以从里向外来分析它:

[^,] 除了逗号之外的任何字符

[^,]* 0或者多个非逗号字符

\([^,]*\) 将这些非逗号字符标记为\1,这样可以在之后的替换模式表达式中引用它

\([^,]*\), 我们必须找到0或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。

正是指出一个使用正则表达式常见错误的最佳时机。为什么我们要使用[^,]*这样的一个表达式,而不是更加简单直接的写法,例如:.*,来匹配第一个参数呢?设想我们使用模式.*来匹配字符串10,7,2,它应该匹配10,还是10,7,?为了解决这个两义性(ambiguity),正则表达式规定一律按照最长的串来,在上面的例子中就是10,7,,显然这样就找出了两个参数而不是我们期望的一个。所以,我们要使用[^,]*来强制取出第一个逗号之前的部分。

这个表达式我们已经分析到了:foo(\([^,]*\),这一段可以简单的翻译为“当你找到foo(就把其后直到第一个逗号之前的部分标记为\1”。然后我们使用同样的办法标记第二个参数为\2。对第三个参数的标记方法也是一样,只是我们要搜索所有的字符直到右括号。我们并没有必要去搜索第三个参数,因为我们不需要调整它的位置,但是这样的模式能够保证我们只去替换那些有三个参数的foo()方法调用,在foo()是一个重载(overloading)方法时这种明确的模式往往是比较保险的。然后,在替换部分,我们找到foo()的对应实例,然后利用标记好的部分进行替换,是把第一和第二个参数交换位置。

正则表达式语法支持情况 命令或环境 . [ ] ^ $ \( \) \{ \} ? + | ( ) vi √ √ √ √ √      Visual C++ √ √ √ √ √      awk √ √ √ √  awk是支持该语法的,只是要在命令

行加入 --posix or --re-interval参数即可,可见

man awk中的interval expression √ √ √ √ sed √ √ √ √ √ √     delphi √ √ √ √ √  √ √ √ √ python √ √ √ √ √ √ √√√√java √ √ √ √ √ √     javascript √ √ √ √ √  √ √ √ √ php √ √ √ √ √      perl √ √ √ √ √  √ √ √ √ C# √ √ √ √   √ √ √ √


  • 本文相关:
  • 正则表达式\d元字符(相对于数字0-9)
  • 正则表达式\w元字符使用方法
  • 正则表达式\w元字符使用介绍
  • 正则表达式(regex)入门、元字符(特殊字符)学习与提高
  • 正则表达式常用元字符整理小结
  • php正则表达式基本函数 修饰符 元字符和需转义字符说明
  • 正则表达式教程之匹配一组字符详解
  • 正则表达式教程之匹配单个字符详解
  • 正则表达式教程之操作符及说明详解
  • 正则表达式学习教程之回溯引用backreference详解
  • 正则表达式教程之元字符的使用详解
  • 获取网址路径的正则
  • javascript 正则表达式之regexp属性、方法及应用分析
  • 正则表达式学习笔记
  • javascript 正则表达式(笔记)
  • [asp]中的正则表达式运用代码
  • 正则表达式:过滤&lt;font&gt;和&lt;/font&gt;
  • javascript validation for email(正则表达式) 英文翻译
  • 学习正则表达式30分钟入门教程(第二版)
  • 正则表达式字面量在ecmascript5中的变化
  • 正则表达式匹配,替换,查找
  • 正则表达式 换行符
  • 正则表达式问题:元字符“.”匹配的是什么?
  • 正则表达式怎样匹配任意字符
  • 正则表达式中 var reg = /[.\n]/; 为什么不可以区配任何?
  • 正则表达式的符号
  • 正则表达式的元字符有哪些?
  • 正则表达式 选中以某些字符开始,某些字符结尾的字符串
  • 正则表达式 "^+$"是什么意思
  • 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思 ?...
  • 正则表达式 .*? 是什么意思啊?
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved