[每日一题] OCP1z0-047 :2013-07-14正则表达式(五)

2014-11-24 08:53:46 · 作者: · 浏览: 3
一个组llastName中捕获姓的正则表达式为:\b[A-Z][a-z]+( [A-Z][a-z]+)\b
它产生了4次匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza
每一次匹配都对应了一个lastName组:
第1次匹配:lastName group=Seinfeld
第2次匹配:lastName group=Benes
第3次匹配:lastName group=Kramer
第4次匹配:lastName group=Costanza
不管是否设置了选项ExplictCapture,组都将被捕获
( =)
正声明。声明的右侧必须是括号中指定的模式。此模式不构成最终匹配的一部分
正则表达式\S+( =.NET)要匹配的输入字符串为:The languages were Java,C#.NET,VB.NET,C,Jscript.NET,Pascal
将产生如下匹配:〕
C#
VB
JScript.
( !)
负声明。它规定模式不能紧临着声明的右侧。此模式不构成最终匹配的一部分
\d{3}( ![A-Z])要匹配的输入字符串为:123A 456 789111C
将产生如下匹配:
456
789
( <=)
反向正声明。声明的左侧必须为括号内的指定模式。此模式不构成最终匹配的一部分
正则表达式( <=New)([A-Z][a-z]+)要匹配的输入字符串为:The following states,New Mexico,West Virginia,Washington, New England
它将产生如下匹配:
Mexico
England
反向正声明。声明的左侧必须不能是括号内的指定模式。此模式不构成最终匹配的一部分
正则表达式(
它将实现如下匹配:
56F
89C
( >)
非回溯组。防止Regex引擎回溯并且防止实现一次匹配
假设要匹配所有以“ing”结尾的单词。输入字符串如下:He was very trusing
正则表达式为:.*ing
它将实现一次匹配 单词trusting。“.”匹配任意字符,当然也匹配“ing”。所以,Regex引擎回溯一位并在第2个“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:( >.*)ing
它将实现0次匹配。“.”能匹配所有的字符,包括“ing” 不能匹配,从而匹配失败
五. 决策字符
字 符
描 述
举 例
( (regex)yes_regex|no_regex)
如果表达式regex匹配,那么将试图匹配表达式yes。否则匹配表达式no。正则表达式no是可先参数。注意,作出决策的模式宽度为0.这意味着表达式yes或no将从与regex表达式相同的位置开始匹配
正则表达式( (\d)dA|A-Z)B)要匹配的输入字符串为:1A CB3A5C 3B
它实现的匹配是:
1A
CB
3A
( (group name or number)yes_regex|no_regex)
如果组中的正则表达式实现了匹配,那么试图匹配yes正则表达式。否则,试图匹配正则表达式no。no是可先的参数
正则表达式
(\d7) -( (1)\d\d[A-Z]|[A-Z][A-Z]要匹配的输入字符串为:
77-77A 69-AA 57-B
它实现的匹配为:
77-77A
-AA
注:上面表中列出的字符强迫处理器执行一次if-else决策
六. 替换字符
字 符
描 述
$group
用group指定的组号替换
${name}
替换被一个( )组匹配的最后子串
$$
替换一个字符$
$&
替换整个的匹配
$^
替换输入字符串匹配之前的所有文本
$’
替换输入字符串匹配之后的所有文本
$+
替换最后捕获的组
$_
替换整个的输入字符串
注:以上为常用替换字符,不全
七. 转义序列
字 符
描 述
\\
匹配字符“\”
\.
匹配字符“.”
\*
匹配字符“*”
\+
匹配字符“+”
\
匹配字符“ ”
\|
匹配字符“|”
\(
匹配字符“(”
\)
匹配字符“)”
\{
匹配字符“{”
\}
匹配字符“}”
\^
匹配字符“^”
\$
匹配字符“$”
\n
匹配换行符
\r
匹配回车符
\t
匹配制表符
\v
匹配垂直制表符
\f
匹配换面符
\nnn
匹配一个8进数字,nnn指定的ASCII字符。如\103匹配大写的C
\xnn
匹配一个16进数字,nn指定的ASCII字符。如\x43匹配大写的C
\unnnn
匹配由4位16进数字(由nnnn表示)指定的Unicode字符
\cV
匹配一个控制字符,如\cV匹配Ctrl-V
八. 选项标志
选项标志
名 称
I
IgnoreCase
M
Multiline
N
ExplicitCapture
S
SingleLine
X
IgnorePatternWhitespace
注:选项本身的信作含义如下表所示:
标 志
名 称
IgnoreCase
使模式匹配不区分大小写。默认的选项是匹配区分大小写
RightToLeft
从右到左搜索输入字符串。默认是从左到右以符合英语等的 阅读习惯,但不符合阿拉伯语或希伯来语的阅读习惯
None
不设置标志。这是默认选项
Multiline
指定^和$可以匹配行首和行尾,以及字符串的开始和结尾。这意味着可以匹配每个用换行符分隔的行。但是,字符“.”仍然不匹配换行符
SingleLine
规定特殊字符“.”匹配任意的字符,包括换行符。默认情况下,特殊字符“.”不匹配换行符。通常与MultiLine选项一起使用
ECMAScript.
ECMA(European Coputer Manufacturer’s Association,欧洲计算机生产商协会)已经定义了正则表达式应该如何实现,而且已经在ECMAScript规范中实现,这是一个基于标准的 JavaScript。这个选项只能与IgnoreCase和MultiLine标志一起使用。与其它任何标志一起使用,ECMAScript都将产生异常
IgnorePatternWhitespace
此选项从使用的正则表达式模式中删除所有非转义空白字符。它使表达式能跨越多行文本,但必须确保对模式中所有的空白进行转义。如果设置了此选项,还可以使用“#”字符来注释下则表达式
Complied
它把正则表达式编译为更接近机器代码的代码。这样速度快,但不允许对它进行任何修改