标签归档:正则

Java正则类

之前一直研究正则的内容,一直忽略java的类,最近由于需要经常用到,把代码记录下来:

 

String line = “This order was placed( iOS 10.3.1;) for QT3000! OK?”;
String pattern = “iOS ([^;]*);”;

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);
if (m.find()) {
System.out.println(“Found value: ” + m.group(0));
System.out.println(“Found value: ” + m.group(1));
} else {
System.out.println(“NO MATCH”);
}

JavaScript正则表达式定义常用方法

正则的定义:

var reg = /pattern/igm;
var reg = new RegExp(‘pattern’, ‘igm’);

1. 其中i的意思是忽略大小写,如:

不加i

reg = /test/;
str = ‘tEStab’;
reg.exec(str);//返回null

加上i

reg = /test/i;
str = “tEStab”;
reg.exec(str);//返回["tESt"]

2. g的意思是全局查找,

不加g

reg = /tes[ta]/;
str = ‘testatesab’;
reg.exec(str); //返回["test"]
reg.exec(str); //返回["test"]

加上g

reg = /tes[ta]/g;
str = ‘testatesab’;
reg.exec(str); //返回["test"]
reg.exec(str); //返回["tesa"]
reg.exec(str); //返回null

3. m的意思是指让^和$匹配行首和行尾

不加m

reg = /^b[ac]/g;
str=’ba.sinnbcsohu’;
reg.exec(str); //返回["ba"]
reg.exec(str); //返回null

加上m

reg = /^b[ac]/g;
str=’ba.sinnbcsohu’;
reg.exec(str); //返回["ba"]
reg.exec(str); //返回["bc"]
reg.exec(str); //返回null

正则的常用方法:

1. exec方法

result = reg.exec(str)
//返回的result是一个类数组的对象,如果在chrome的console里看到是数组,其实使用for in可以得到另外两个只读属性index, input
for(a in result) console.log(a + “:” + result[a]);

结果如下:

0:tESt
index:0
input:tEStab
result.input存放匹配的原始字符串,result.index是当前匹配的索引,其作用是当我们使用了g修饰符时,它是多次执行reg.exec(str)的依据;数据里依次存放匹配到的字符串,和正则中小括号匹配的分组数据,如:
reg = /tes(t)/;
str = ‘testab’;
reg.exec(str);//返回["test", "t"]
exec方法也同样影响RegExp(稍后介绍)

2. test方法

reg.test(str)
//测试是否匹配成功,若成功返回true,否则返回false。跟exec一样,其也返回结果,存放在RegExp.$*几个变量中,其中RegExp.$input, RegExp.$_表示输入字符串,而RegExp.$1 – RegExp.$9表示匹配的变量

3. RegExp对象

如果直接使用console.log(RegExp),function RegExp() { [native code] },这也是正则的构成方法,使用for in来看一下其中的变量:

reg = /tes(t)/;
str = ‘atestb’;
reg.exec(str);//结果为 ["test']
for(name in RegExp) console.log(name + “:” + RegExp[name]);

结果如下:

input:atestb
multiline:false
lastMatch:test
lastParen:t
leftContext:a
rightContext:b
$1:t
$2:
$3:
$4:
$5:
$6:
$7:
$8:
$9:

其中RegExp.input = RegExp.$input = RegExp.$_,RegExp.multiline表示m标签符是否被设置

总结

当然,能用正则的方法还有String对象的match, replace, split, search等方法,有时间再做一次介绍。这里只是介绍其使用方法,对于如果写正则表达式没有深入讲,内容还有很多
推荐阅读:JavaScript正则表达式

如何使用正则配对查找html中的标签

找了好久,以下的可以使用:

/<script[^>]*>.*?<\/script>/ig

基于javascript的正则,如果使用其他标签可以将其中的”script”进行替换。

有几点需要说明的

1、*?表示非贪心模式,如果是贪心模式下,则会将div中的内容也会替换进去。

<script type=”text/javascritp”>
//code1 at here…
</script>

<div>some other tag</div>

<script type=”text/javascritp”>
//code2 at here…
</script>

2、”<\/script>”中的”\“不可少,不然也会出现错误,当然在js中,/是正则的分界符,但在notepad++中,这个符号也不可少,不知道,虽然正则书上只对以下字符规定了转义要求:

$()*+.?[\^{|