正则表达式规则表(正则表达式出现一次或多次)
大家好,今天来为大家分享正则表达式规则表的一些知识点,和正则表达式出现一次或多次的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
如何使用正则表达式
QTP使用正则表达式有2种方式,一种是在“常量值选项”对话框或“参数选项”对话框的“值”框中输入字符串的正则表达式语法,可以定义正则表达式。选中“正则表达式”复选框,以指示QuickTest将该值作为正则表达式处理。
另一种是使用描述性编程,所有编程描述属性值都均自动作为正则表达式处理。注意:您可以只将正则表达式应用于字符串类型的值。
默认情况下,除了句点(.)、连字符(-)、星号(*)、插字号(^)、方括号([ ])、圆括号(())、货币符号($)、垂直线(|)、加号(+)、问号(?)和反斜杠(\)以外,QuickTest将正则表达式中的所有字符作为文字处理。当一个特殊字符前面带有反斜杠(\)时,QuickTest将其作为文字字符处理。
如果在“常量值选项”或“参数选项”对话框的“值”框中输入一个特殊字符,QuickTest会询问您是否要在每个特殊字符前面添加一个反斜杠(\)。如果单击“是”,则相应的特殊字符前面就会加上一个反斜杠(\),以指示QuickTest将该字符作为文字处理。如果单击“否”,QuickTest将该特殊字符作为正则表达式字符处理。
本节描述某些更常用的选项,可用于创建正则表达式:
•使用反斜杠字符(\)
•匹配任意单个字符(.)
•匹配列表中的任意单个字符( [xy])
•匹配不在列表中的任意单个字符( [^xy])
•匹配某个范围内的任意单个字符( [x-y])
•特定字符的零次或多次匹配(*)
•特定字符的一次或多次匹配(+)
•特定字符的零次或一次匹配(?)
•对正则表达式进行分组(())
•匹配几个正则表达式中的一个表达式(|)
•在一行的开始进行匹配( ^)
•在一行的结尾进行匹配($)
•匹配包括下划线在内的任一字母数字字符(\w)
•匹配任意非字母数字字符(\W)
•组合正则表达式操作符
正则表达式的语法规则和标记
字符
^符号匹配字符串的开头。例如:
^abc与“abc xyz”匹配,而不与“xyz abc”匹配
$符号匹配字符串的结尾。例如:
abc$与“xyz abc”匹配,而不与“abc xyz”匹配。
注意:如果同时使用^符号和$符号,将进行精确匹配。例如:
^abc$只与“abc”匹配
*符号匹配0个或多个前面的字符。例如:
ab*可以匹配“ab”、“abb”、“abbb”等
+符号匹配至少一个前面的字符。例如:
ab+可以匹配“abb”、“abbb”等,但不匹配“ab”。
?符号匹配0个或1个前面的字符。例如:
ab?c?可以且只能匹配“abc”、“abbc”、“abcc”和“abbcc”
.符号匹配除换行符以外的任何字符。例如:
(.)+匹配除换行符以外的所有字符串
x|y匹配“x”或“y”。例如:
abc|xyz可匹配“abc”或“xyz”,而“ab(c|x)yz”匹配“abcyz”和“abxyz”
{n}匹配恰好n次(n为非负整数)前面的字符。例如:
a{2}可以匹配“aa“,但不匹配“a”
{n,}匹配至少n次(n为非负整数)前面的字符。例如:
a{3,}匹配“aaa”、“aaaa”等,但不匹配“a”和“aa”。
注意:a{1,}等价于a+
a{0,}等价于a*
{m,n}匹配至少m个,至多n个前面的字符。例如:
a{1,3}只匹配“a”、“aa”和“aaa”。
注意:a{0,1}等价于a?
[xyz]表示一个字符集,匹配括号中字符的其中之一。
JAVA正则表达式
这是我的blog上面的详细介绍。配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim= function()
{
return this.replace(/(^\s*)|(\s*$)/g,"");
}
利用正则表达式分解和转换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-./?%&=]*)?
利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复]
var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2)//结果为:abcefgi
我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。
得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1
s=" "
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"出处:蓝色理想
前一段时间写了2段EmEditor的宏,用来统计代码行数和简单的规约检查,稍微整理一下,
下面是从EmEditor的Q&A的提取的实例:双引号包含的字符串
strings surrounded by double-quotation marks
“.*?” [ ]包含的字符串
strings surrounded by [ ]
\[[^\[]*?\]变量名
variable names
[a-zA-Z_][a-zA-Z_0-9]* IP地址
IP addresses
([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})网页地址
URL
(\S+)://([^:/]+)(:(\d+))?(/[^#\s]*)(#(\S+))?各行Tab以后的文字列
lines followed by a tab
\t.*$平仮名ひらがな
Hiragana
[\x{3041}-\x{309e}]全角片仮名全角カタカナ
Full-width Katakana
[\x{309b}-\x{309c}\x{30a1}-\x{30fe}]半角仮名半角カナ
Half-width Kana
[\x{ff61}-\x{ff9f}]中日韩汉字
CJK ideographs
[\x{3400}-\x{9fff}\x{f900}-\x{fa2d}]中日韩汉字符号
CJK ideograph marks
[\x{3000}-\x{3037}]韩国字符
Hangul
[\x{1100}-\x{11f9}\x{3131}-\x{318e}\x{ac00}-\x{d7a3}]行头插入//
Insert// at start of lines
Find: ^
Replace with://删除行头//
Remove// at end of lines
Find: ^//
Replace:删除行后的空白文字(包含空格和制表位 Space+Tab)
Remove trailing whitespaces
Find:\s+?$
Replace with:将(abc)替换为[abc]
Replace(abc) with [abc]
Find:\((.*?)\)
Replace:\[\1\]将<H3…>替换为<H4…>
Replace<H3…> with<H4…>
Find:<H3(.*?)>
Replace:<H4\1>将9/13/2003替换为2003年9月13日
Replace 9/13/2003 with 2003.9.13
Find:([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})
Replace:\3年\1月\2日将字母a-z替换为大写字母
Uppercase characters from a to z
Find: [a-z]
Replace:\U\0首字母大写
Capitalize all words
Find:([a-zA-Z])([a-zA-Z]*)
Replace:\U\1\L\2
正则表达式的书写形式
/\{\{(.+?)\}\}/g
最前面的“/”与最后面的“/”是分隔符,表示正则表达式的开始与结束。
最后的“g”标志则表示正则表达式使用的global(全局)的状态。使用 global标志表明在被查找的字符串中搜索操作将查找所有符合的项,而不仅仅是第一个。这也被称为全局匹配。【相关的标志还有i(ignoreCase,表示忽略大小写)、m(multiline,表示允许跨行)】
然后我们再来看中间的主体部分:\{\{(.+?)\}\}花括号{}是正则里的限定符。但是我们这里是要找字符串里的花括号,所以前面加个“\”来表示是要找字符的花括号。“\{\{”“\}\}”就是找前后两组花括号。
“.”表示任意字符。“+”表示前面表达式一次乃至多次。“?”表示匹配模式是非贪婪的。
/\{\{(.+?)\}\}/g完整的意思就是:在全部范围内查找匹配前后有两组花括号的字符串。
例如:“{{}}”、“{{asdfasdfasdf56745}}”、“{{yuyuy#$%8787 9+_)(*)87}}”
拓展资料:
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
参考资料:正则表达式-百度百科
关于正则表达式规则表,正则表达式出现一次或多次的介绍到此结束,希望对大家有所帮助。