A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡大强 中级黑马   /  2012-6-15 23:28  /  1826 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.在正则表达式中,“\”永远出现在一个有着特殊含义的字符序列的开头,这个序列可以由一个或多个字符构成。

注意:若要搜索“\”本身,就必须对\字符进行转义,相应的转移序列是两个连续的反斜杠字符\\

2.在一个完整的正则表达式里,字符\的后面永远跟着另一个字符,^ 定义字符串的开头   $  定义字符串的结尾
3.一定要避免让一个区间的尾字符小于它的首字符

‘-’(连字符)作为一个特殊的元字符,只能用在[和]之间,在其他地方,’-’只是一个普通字符

在同一个字符集合中可以给出多个字符区间,如[A-Za-z0-9]



我们平时用正则表达式。。其实很多人都没有去特意的记它,所以。。这里列举几个常识。。。欢迎补充~!

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
一个是建表语句格式如下 :
create【空格若干】table 【表名和其他信息】
正则表达式如下:create\s+table\s+.+

第二个是建索引语句格式如下 :
create【空格和字母若干】index【空格和字母下划线等若干】
正则表达式如下:create[\sA-Za-z]+index[\sA-Za-z_]+

像【空格和字母下划线等若干】这样的说法比较模糊,上面的正则表达式可以正常匹配正确的语句,但是对于错误语句的限制不够,还有进一步修改的余地。

在JAVA中使用正则表达式时,应该import下面两个类
import java.util.regex.Matcher;
import java.util.regex.Pattern;
另外"\"应该被替换成"\\"。

具体方法是:
String sql="create table test(id varchar(10) not null)"
String reg="create\\s+table\\s+.+";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(sql);
boolean b = m.matches();

得到的布尔值表示sql是否匹配正则表达式reg。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
如果要在程序中应用正则表达式则必须依靠Pattern类与Matcher类,这两个类都在java.util.regex包中定义。Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范.
String类对正则表达式的支持:
public boolean matches(String regex)  字符串匹配
public String replaceAll(String regex,String replacement)  字符串替换
public String[] split(String regex)  字符串拆分
回复 使用道具 举报
利用正则表达式分解和转换IP地址:

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马