1 / 28
文档名称:

ABAP正则表达式.docx

格式:docx   大小:53KB   页数:28页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ABAP正则表达式.docx

上传人:63229029 2017/10/14 文件大小:53 KB

下载得到文件列表

ABAP正则表达式.docx

相关文档

文档介绍

文档介绍:正则表达式(Regular Expressions)
正则表达式在其他编程语言中的应用非常广泛,网上资料也非常多,而网上在ABAP语言中应用的资料却很少,尽管各语言中正则表达式语法知识都很类似,但仍然有一些区别,本文主要是简单介绍一下其基本语法。总结一下,方便大家查阅。
欢迎转载,请注明出处,文中不足之处还望指正。(Email:hubin0809@)
一、简要认识
正则表达式就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如表达式“ab+”描述的特征是“一个'a' 和任意个'b' ”,那么'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(3)用来替换,比普通的替换更强大。
举例
DATA: matcher TYPE REF TO cl_abap_matcher,
      match   TYPE c LENGTH 1.
matcher = cl_abap_matcher=>create( pattern     = '\w+@\w+(\.\w+)+'
                                   text        = 'hubin0809@' ).
match = matcher->match( ).
WRITE match.
输出结果:X
解释:
1>     '\w+@\w+(\.\w+)+'中\w 是表示任意一个字母或数字或下划线,+ 表示前面字符个数为一个或多个,@即为’@’字符
2>     matcher参照类cl_abap_matcher,match有匹配的意思,调用静态方法create创建了匹配的对(暂时这么理解,好吧,我承认我不知道怎么形容),然后调用match方法,返回值中’X’表示匹配,SPACE表示不匹配。
具体含义后面会讲到,本程序主要是验证邮件地址是否合法。
 
二、语法规则
 
pattern模板,text要匹配的字符,match匹配结果,’X’表示匹配,SPACE表示不匹配。
 
1、普通字符
 
字母、数字、汉字、下划线、以及后面没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
Pattern
Text
Match
A
A
X
A
a
-
A
AB
-
AB
AB
X
 
2、转义字符
 
一些不便书写的字符,采用在前面加"\" 的方法。例如’.’
表达式
可匹配
\\
代表"\" 本身
\.
匹配小数点(.)本身
\Q...\E
中间的字符作为普通字符
 
Pattern
Text
Match
.\.
f.
X
.\.
f\f
-
\w\d
\w\d
-
\\w\\d
\w\d
X
\Q\w\d\E
\w\d
X
 
3、能够与'多种字符' 匹配的表达式
 
正则表达式中的一些表示方法,可以匹配'多种字符' 其中的任意一个字符。比如,表达式"\d" 可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个。这就好比玩***牌时候,大小王可以代替任意一张牌,但是只能代替一张牌。(没玩过?好吧,去玩qq够级吧,ok,信息泄露了,承认我是山东人)
表达式
可匹配
\d
任意一个数字,0~9 中的任意一个
\w
任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
\s
包括空格、制表符、换页符等空白字符的其中任意一个
.
小数点可以匹配除了换行符(\n)以外的任意一个字符
 
Pattern
Text
Match
\d
9
X
\d
25
-
\d\d
25
X
\w
A
X
\s
\n
X
...
4zF
X
 
4、自定义能够与'多种字符' 匹配的表达式
 
使用方括号[ ] 包含一系列字符,能够匹配其中任意一个字符。用[^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。
表达式
可匹配
[ab5@]
匹配"a" 或"b" 或"5" 或"@"
[^abc]
匹配"a&quo