正则表达式匹配字符串配

问说网分享与设计有关的文章素材界面和作品,提供设计教程、素材分享、界面欣赏、编程设计等内容,你可以在这里阅读、学习、提问、分享、交流。
为保证资源能得到合理使用,让用户享受到更好的问说网服务,借鉴业界标准,我们制定了问说网账户冻结政策,
警告:您的浏览器目前处于缩放状态,会导致网页显示不正常,您可以键盘按“ctrl+数字0”组合键恢复初始状态。
警告:你正在使用低版本的浏览器浏览本站,为得到更好的浏览效果,请使用高级浏览器。青青子衿, 悠悠我心, 但为君故, 沉吟至今
常用正则表达式
  正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行匹配HTML标记的正则表达式:&(\S*?)[^&]*&.*?&/\1&|&.*? /&评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力匹配首尾空白字符的正则表达式:^\s*|\s*$评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*评注:表单验证时很实用匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*评注:网上流传的版本功能很有限,上面这个基本可以满足需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证时很实用匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}评注:匹配形式如
或 021-匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中国邮政编码:[1-9]\d{5}(?!\d)评注:中国邮政编码为6位数字匹配身份证:\d{15}|\d{18}评注:中国的身份证为15位或18位匹配ip地址:\d+\.\d+\.\d+\.\d+评注:提取ip地址时有用匹配特定数字:^[1-9]\d*$    //匹配正整数^-[1-9]\d*$   //匹配负整数^-?[1-9]\d*$   //匹配整数^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)评注:处理大量数据时有用,具体应用时注意修正匹配特定字符串:^[A-Za-z]+$  //匹配由26个英文字母组成的字符串^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串^[a-z]+$  //匹配由26个英文字母的小写组成的字符串^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串评注:最基本也是最常用的一些表达式原载地址:http://lifesinger.3322.org/myblog/?p=185
  除非注明,文章均为原创,转载请以链接形式标明本文地址
  本文地址:
谢谢分享...
0-255匹配:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]简化为25[0-5]|2[0-4][0-9]|(1[0-9]|[1-9])?[0-9]
真得很不错,收藏了!
谢谢,找了好久
好多都不怎么严格的,用的时候还需要留意的,友情提示。
貌似很高深啊
怎么没有匹配网址的?
谢谢,转载了。不过有些关于中文的正则需要在特定编程语言环境下才能正常使用。
.huangcheng
谢 了,,,,,..
正则写的很屎
.yunlingye
感觉不是说的那么好,比如匹配ip,就没弄具体一点,还有身份证,感觉就是错的(最后一位可以为x)
正好用的着我转到我的网站上去了不介意吧?呵呵
最近在学URL重定向,,收藏了,谢谢
示例?疯狂代码?
不太好~!有些错误~!
不是很专业,有些匹配条件不严谨
好东西,收藏了!
什么是正则啊?
说好的可以说是完全不懂正则 表达式的。。俺虽然不是高手,但是都看得出来,不怎么好。。
.匹配ip地址
匹配ip地址,你试试这个。但是还有一个IP格式没有满足,比如:256.275.285.295,我们都知道,IP地址最大是不可以超过255的。请高手指点,有什么办法解决这个问题,先谢谢。\b(([0-9]{0,3})\.){3}[0-9]{0,3}\b试试可以用不 于
9:24:45 回复\d{1,3}\.{1,3}\.{1,3}\.{1,3}php学员 于
9:31:41 回复这个是错误的\d的意思就是[0-9]后面加上{1,3}极有可能大于255
IP地址的匹配好象不對吧。。
.技术无止境
感谢提供,已经搜藏
太差了,你都测试过了吗?整数不认0email输两个@都可以,#!都不报错
.ddddddddddd
一看就是抄袭的正实数怎么办?例如金融的钱币格式。
,匹配问题,深圳号码江苏大 于
19:30:02 回复很好不错
匹配中文 是错误的
很有帮助,等待更有帮助的信息
身份证好像错了
妈蛋,试了一下,错的
.小时候很帅
18位身份证会有X结尾的,最后一位要改下。
好的很,不打篮球就做下网站啊,什么的
不错,收藏了
.baobaoyan
(?!^0*$)(?!^0*\.0*$)^\d{1,1}(\d{1,2})?$这个判断正整数小于1000的正则表达式
在第一个公司,天天要来看正则,在第三个公司了,在baidu一搜索又来看了.呵呵.谢谢!
正式我想要的哈,谢谢了
匹配腾讯QQ号:[1-9][0-9]{4,}[1-9]{5,}
不是很专业的
这个错了匹配身份证:\d{15}|\d{18}18位身份证号的末位可能是字母zhenwulv 于
10:14:18 回复\d{15}|\d{18}把18改成17后加个x再或一下不就可以了?你还是要学点基本的东西。
你的中国身份证号里边少了一个,比如一个人的身份证是:34567x你的正则表达式就会验证出错~~!应该怎么加一下呢?
匹配身份证:^\d{14}\w|\d{17}\w$或者:^\d{14}\d{3}?\w$这样就可以包含象34567x的内容了!
好文值得收藏!
测试一下,不好意思。
邮编的验证规则是错的,有0开头的邮编
ds邮编的验证规则是错的,有0开头的邮编
匹配ip地址:\d+\.\d+\.\d+\.\d+是不是有问题啊,我要是444.5345也能匹配?谢 于
13:14:49 回复写的不错,有的地方如果不是专业的就会看不懂!我已经收藏!谢 于
13:16:49 回复没有问题,在{}中是长度你可以试一下!试试可以用不 于
9:43:50 回复不行用不了
这样应该可以
\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3} (双斜线是转换)zhenwulv 于
14:00:46 回复((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)应该是这样的
很有帮助,等待更有帮助的信息
.恳求帮助的人
允许输入字母,数字,下划线,.,@这个正则表达式怎么写啊?
.originaldream
大哥!你真是传说中的牛人。每次困境中找资料,看到你的博客都特亲切。如果有你这样的精神,经常写博客,分享经验。如果有你这么全的计算机知识。该多好!!如果真有你这样的老师,能手把手教计算机,也就不会学的这么痛苦了!!
如果不回家不要乱写 好么 郁闷
哎,我一个业余选手都能看出很不专业……
对研究 mod_rewrite 有用啊
这个样应该可以把。谢谢。
非常感谢月光,帮助很大!
0~255 可以这样表示:^2[04]\d|25[0-5]|[01]?\d?\d$可是,1~255就不知道怎样表示了?请哪位高手过招!zhenwulv 于
10:16:24 回复25[1-5]|[01]?\d?\d$
赞助商广告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.页面导航:
→ 正文内容 Java 正则
Java 正则表达式详解
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。
如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。
然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache.org下载源代码开放的Jakarta-ORO库。本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API为例介绍如何使用正则表达式。
一、正则表达式基础知识
我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说:
1.1 句点符号
假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符――句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
1.2 方括号符号
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符:
1.3 “或”符号
如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组,具体请参见后面介绍。
1.4 表示匹配次数的符号
表一显示了表示匹配次数的符号,这些符号用来确定紧靠该符号左边的符号出现的次数:
假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如图一所示。在正则表达式中,连字符(“-”)有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符“\”。
图一:匹配所有123-12-1234形式的社会安全号码
假设进行搜索的时候,你希望连字符号可以出现,也可以不出现――即,999-99-999都属于正确的格式。这时,你可以在连字符号后面加上“?”数量限定符号,如图二所示:
图二:匹配所有123-12-234形式的社会安全号码
下面我们再来看另外一个例子。美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”。图三显示了完整的正则表达式。
图三:匹配典型的美国汽车牌照号码,如8836KV
1.5 “否”符号
“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。
图四:匹配所有单词,但“X”开头的除外
1.6 圆括号和空白符号
假设要从格式为“June 26, 1951”的生日日期中提取出月份部分,用来匹配该日期的正则表达式可以如图五所示:
图五:匹配所有Moth DD,YYYY格式的日期
新出现的“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符。如果字符串正确匹配,接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组,然后用ORO API(本文后面详细讨论)提取出它的值。修改后的正则表达式如图六所示:
图六:匹配所有Month DD,YYYY格式的日期,定义月份值为第一个组
1.7 其它符号
为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如表二所示:
表二:常用符号
例如,在前面社会安全号码的例子中,所有出现“[0-9]”的地方我们都可以使用“\d”。修改后的正则表达式如图七所示:
图七:匹配所有123-12-1234格式的社会安全号码
二、Jakarta-ORO库
有许多源代码开放的正则表达式库可供Java程序员使用,而且它们中的许多支持Perl 5兼容的正则表达式语法。我在这里选用的是Jakarta-ORO正则表达式库,它是最全面的正则表达式API之一,而且它与Perl 5正则表达式完全兼容。另外,它也是优化得最好的API之一。
Jakarta-ORO库以前叫做OROMatcher,Daniel Savarese大方地把它赠送给了Jakarta Project。你可以按照本文最后参考资源的说明下载它。
我首先将简要介绍使用Jakarta-ORO库时你必须创建和访问的对象,然后介绍如何使用Jakarta-ORO API。
▲ PatternCompiler对象
首先,创建一个Perl5Compiler类的实例,并把它赋值给PatternCompiler接口对象。Perl5Compiler是PatternCompiler接口的一个实现,允许你把正则表达式编译成用来匹配的Pattern对象。
▲ Pattern对象
要把正则表达式编译成Pattern对象,调用compiler对象的compile()方法,并在调用参数中指定正则表达式。例如,你可以按照下面这种方式编译正则表达式“t[aeio]n”:
默认情况下,编译器创建一个大小写敏感的模式(pattern)。因此,上面代码编译得到的模式只匹配“tin”、“tan”、 “ten”和“ton”,但不匹配“Tin”和“taN”。要创建一个大小写不敏感的模式,你应该在调用编译器的时候指定一个额外的参数:
创建好Pattern对象之后,你就可以通过PatternMatcher类用该Pattern对象进行模式匹配。
▲ PatternMatcher对象
PatternMatcher对象根据Pattern对象和字符串进行匹配检查。你要实例化一个Perl5Matcher类并把结果赋值给PatternMatcher接口。Perl5Matcher类是PatternMatcher接口的一个实现,它根据Perl 5正则表达式语法进行模式匹配:
使用PatternMatcher对象,你可以用多个方法进行匹配操作,这些方法的第一个参数都是需要根据正则表达式进行匹配的字符串:
? boolean matches(String input, Pattern pattern):当输入字符串和正则表达式要精确匹配时使用。换句话说,正则表达式必须完整地描述输入字符串。
? boolean matchesPrefix(String input, Pattern pattern):当正则表达式匹配输入字符串起始部分时使用。
? boolean contains(String input, Pattern pattern):当正则表达式要匹配输入字符串的一部分时使用(即,它必须是一个子串)。
另外,在上面三个方法调用中,你还可以用PatternMatcherInput对象作为参数替代String对象;这时,你可以从字符串中最后一次匹配的位置开始继续进行匹配。当字符串可能有多个子串匹配给定的正则表达式时,用PatternMatcherInput对象作为参数就很有用了。用PatternMatcherInput对象作为参数替代String时,上述三个方法的语法如下:
? boolean matches(PatternMatcherInput input, Pattern pattern)
? boolean matchesPrefix(PatternMatcherInput input, Pattern pattern)
? boolean contains(PatternMatcherInput input, Pattern pattern)
三、应用实例
下面我们来看看Jakarta-ORO库的一些应用实例。
3.1 日志文件处理
任务:分析一个Web服务器日志文件,确定每一个用户花在网站上的时间。在典型的BEA WebLogic日志文件中,日志记录的格式如下:
分析这个日志记录,可以发现,要从这个日志文件提取的内容有两项:IP地址和页面访问时间。你可以用分组符号(圆括号)从日志记录提取出IP地址和时间标记。
首先我们来看看IP地址。IP地址有4个字节构成,每一个字节的值在0到255之间,各个字节通过一个句点分隔。因此,IP地址中的每一个字节有至少一个、最多三个数字。图八显示了为IP地址编写的正则表达式:
图八:匹配IP地址
IP地址中的句点字符必须进行转义处理(前面加上“\”),因为IP地址中的句点具有它本来的含义,而不是采用正则表达式语法中的特殊含义。句点在正则表达式中的特殊含义本文前面已经介绍。
日志记录的时间部分由一对方括号包围。你可以按照如下思路提取出方括号里面的所有内容:首先搜索起始方括号字符(“[”),提取出所有不超过结束方括号字符(“]”)的内容,向前寻找直至找到结束方括号字符。图九显示了这部分的正则表达式。
图九:匹配至少一个字符,直至找到“]”
现在,把上述两个正则表达式加上分组符号(圆括号)后合并成单个表达式,这样就可以从日志记录提取出IP地址和时间。注意,为了匹配“- -”(但不提取它),正则表达式中间加入了“\s-\s-\s”。完整的正则表达式如图十所示。
图十:匹配IP地址和时间标记
现在正则表达式已经编写完毕,接下来可以编写使用正则表达式库的Java代码了。
为使用Jakarta-ORO库,首先创建正则表达式字符串和待分析的日志记录字符串:
这里使用的正则表达式与图十的正则表达式差不多完全相同,但有一点例外:在Java中,你必须对每一个向前的斜杠(“\”)进行转义处理。图十不是Java的表示形式,所以我们要在每个“\”前面加上一个“\”以免出现编译错误。遗憾的是,转义处理过程很容易出现错误,所以应该小心谨慎。你可以首先输入未经转义处理的正则表达式,然后从左到右依次把每一个“\”替换成“\\”。如果要复检,你可以试着把它输出到屏幕上。
初始化字符串之后,实例化PatternCompiler对象,用PatternCompiler编译正则表达式创建一个Pattern对象:
现在,创建PatternMatcher对象,调用PatternMatcher接口的contain()方法检查匹配情况:
接下来,利用PatternMatcher接口返回的MatchResult对象,输出匹配的组。由于logEntry字符串包含匹配的内容,你可以看到类如下面的输出:
3.2 HTML处理实例一
下面一个任务是分析HTML页面内FONT标记的所有属性。HTML页面内典型的FONT标记如下所示:
程序将按照如下形式,输出每一个FONT标记的属性:
在这种情况下,我建议你使用两个正则表达式。第一个如图十一所示,它从字体标记提取出“"face="Arial, Serif" size="+2" color="red"”。
图十一:匹配FONT标记的所有属性
第二个正则表达式如图十二所示,它把各个属性分割成名字-值对。
图十二:匹配单个属性,并把它分割成名字-值对
分割结果为:
现在我们来看看完成这个任务的Java代码。首先创建两个正则表达式字符串,用Perl5Compiler把它们编译成Pattern对象。编译正则表达式的时候,指定Perl5Compiler.CASE_INSENSITIVE_MASK选项,使得匹配操作不区分大小写。
接下来,创建一个执行匹配操作的Perl5Matcher对象。
假设有一个String类型的变量html,它代表了HTML文件中的一行内容。如果html字符串包含FONT标记,匹配器将返回true。此时,你可以用匹配器对象返回的MatchResult对象获得第一个组,它包含了FONT的所有属性:
接下来创建一个PatternMatcherInput对象。这个对象允许你从最后一次匹配的位置开始继续进行匹配操作,因此,它很适合于提取FONT标记内属性的名字-值对。创建PatternMatcherInput对象,以参数形式传入待匹配的字符串。然后,用匹配器实例提取出每一个FONT的属性。这通过指定PatternMatcherInput对象(而不是字符串对象)为参数,反复地调用PatternMatcher对象的contains()方法完成。PatternMatcherInput对象之中的每一次迭代将把它内部的指针向前移动,下一次检测将从前一次匹配位置的后面开始。
本例的输出结果如下:
3.3 HTML处理实例二
下面我们来看看另一个处理HTML的例子。这一次,我们假定Web服务器从移到了。现在你要修改一些页面中的链接:
执行这个搜索的正则表达式如图十三所示:
图十三:匹配修改前的链接
如果能够匹配这个正则表达式,你可以用下面的内容替换图十三的链接:
注意#字符的后面加上了$1。Perl正则表达式语法用$1、$2等表示已经匹配且提取出来的组。图十三的表达式把所有作为一个组匹配和提取出来的内容附加到链接的后面。
现在,返回Java。就象前面我们所做的那样,你必须创建测试字符串,创建把正则表达式编译到Pattern对象所必需的对象,以及创建一个PatternMatcher对象:
接下来,用com.oroinc.text.regex包Util类的substitute()静态方法进行替换,输出结果字符串:
Util.substitute()方法的语法如下:
这个调用的前两个参数是以前创建的PatternMatcher和Pattern对象。第三个参数是一个Substiution对象,它决定了替换操作如何进行。本例使用的是Perl5Substitution对象,它能够进行Perl5风格的替换。第四个参数是想要进行替换操作的字符串,最后一个参数允许指定是否替换模式的所有匹配子串(Util.SUBSTITUTE_ALL),或只替换指定的次数。
【结束语】在这篇文章中,我为你介绍了正则表达式的强大功能。只要正确运用,正则表达式能够在字符串提取和文本修改中起到很大的作用。另外,我还介绍了如何在Java程序中通过Jakarta-ORO库利用正则表达式。至于最终采用老式的字符串处理方式(使用StringTokenizer,charAt,和substring),还是采用正则表达式,这就有待你自己决定了。
上一篇:下一篇:
最 近 更 新
热 点 排 行正则表达式 匹配 数字 范围 - 放牛的人 - ITeye技术网站
博客分类:
今天要写一个正则表达式,来做前端校验。主要部分是 用来匹配1~4095的数字。
现在就以这个为例,说一下表示范围的正则怎么写。
1、只有1~3位数字,即数字范围:1~999。
分析:第1个数字是1~9,后面的可以出现0~9的数字,最多2位。于是,就有了下面的字符串:
"[1-9]\\d{0,2}+"
2、4位数的,要小于等于4095,即数字范围:。
分析:第1位,可以是1~4;第2位,依赖第1位,当第1位是4的时候,第2位只能是0;同理,第3位依赖第2位;第4位依赖第3位。所以,就有了以下代码:
"[1-4]\\d(?&!4[1-9])\\d\\d(?&!409[6-9])"
这里用的是非捕获(?&!X)
X,通过零宽度的负 lookbehind 来实现的。
完整代码如下:
package com.lippeng.
import java.io.UnsupportedEncodingE
public class HelloWorld {
public static void main(String[] args) throws UnsupportedEncodingException {
String regex = "[1-9]\\d{0,2}+|[1-4]\\d(?&!4[1-9])\\d\\d(?&!409[6-9])";
String[] strArray = { "4094", "4095", "4096", "5000", "4000", "900", "10", "9", "0", "1", "-1", "a", "@" };
for (String str : strArray) {
System.out.println(str + " " + str.matches(regex));
测试结果:
4096 false
5000 false
浏览: 81738 次
来自: 杭州
楼主好人一生平安
非常感谢!我们项目组借鉴了你的思想,实现了!
请问,如果文件中有注释之类的无需国际化的怎么办?
求一个正则表达式,以32开头,8位数字地区代码。不包含下面的( ...
非常感谢!!!正则表达式匹配中文源码例程运用易语言正则表达式支持库实现搜索匹配。程序源码例程是易语言初级进阶教程。
下载地址 (请使用浏览器下载)
CopyRight & &版权所有}

我要回帖

更多关于 正则表达式工具 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信