【个人笔记】SIPp学习--正则表达式 <三>

11 篇文章 3 订阅

1 动作

在一个“recv”或者“recvCmd”命令中, 之间可以放1)正则表达式 2)日志 3)几种命令 4)变量 5)字符串变量 6)变量测试 7)查找 8)跳转到某索引 9)获取时间 10)更改IP 11)鉴权

2 字符和子字符类

字符 其它信息

[ 和 ] 左右方括号用于指定字符类。字符类是进行匹配时所要依据的一组字符。

除连字符 (-) 和脱字符 (^) 外,在字符类中指定的元字符和量词(如 * 和 {m},分别为元字符和量词)没有特殊意义,可当作实际字符进行运算。
SQL Anywhere 还支持子字符类,例如 POSIX 字符类。请参见正则表达式:特殊子字符类。

*星号可用于与字符匹配 0 次或多次。例如,REGEXP ‘.*abc’ 匹配的字符串以 abc 结尾并以任何前缀开头。因此,aabc、xyzabc 和 abc 匹配,但 bc 和 abcc 则不匹配。
? 问号可用于与字符匹配 0 次或 1 次。例如,’colou?r’ 匹配 color 和 colour。
+加号可用于与字符匹配 1 次或多次。例如,’bre+’ 匹配 bre 和 bree,但不匹配 br。
-可以在字符类中使用一个连字符来表示一个范围。例如,REGEXP ‘[a-e]’ 匹配 a、b、c、d 和 e。
有关 REGEXP 和 SIMILAR TO 如何对范围求值的详细信息,请参见LIKE、REGEXP 和 SIMILAR TO:字符比较上的差异。
% 百分号可与 SIMILAR TO 配合使用来匹配任意数目的字符。
不将百分号视为 REGEXP 和 REGEXP_SUBSTR 所使用的元字符。当指定时,它匹配百分号 (%)。
_(下划线字符) 可将下划线与 SIMILAR TO 配合使用来匹配单个字符。
不将下划线视为 REGEXP 和 REGEXP_SUBSTR 所使用的元字符。当指定时,它匹配下划线 (_)。
| 管道符号用于指定匹配字符串时要使用的替代模式。在由竖线分隔的一行模式中,竖线被解释为 OR,匹配过程从最左侧的模式开始,在找到第一个匹配项时停止。因此,您应按优先级的降序顺序列出模式。您可以指定任意数量的替代模式。
( 和 ) 当左括号和右括号用于正则表达式的各个组合部分时,它们为元字符。例如,(ab)* 匹配零个或多个 ab 的重复项。与使用数学表达式一样,您使用组合来控制正则表达式各部分的计算顺序。
{ 和 } 当左大括号和右大括号用于指定量词时,它们为元字符。量词指定一个模式要构成某个匹配所必须重复的次数。例如:{m} 匹配某个字符正好 m 次。例如,’519-[0-9]{3}-[0-9]{4}’ 匹配 519 地区号中的一个电话号码(假定数据按语法中定义的方式进行格式设置)。
{m,} 匹配某个字符至少 m 次。例如,’[0-9]{5,}’ 匹配任何含有五个或更多数字的字符串。
{m,n} 匹配某个字符至少 m 次,但不超过 n 次。例如,SIMILAR TO ‘_{5,10}’ 匹配任何含有 5 到 10(含 5 和 10)个字符的字符串。
\ 反斜线被用作元字符的转义字符。它也可被用于转义非元字符。
^ 对于 REGEXP 和 REGEXP_SUBSTR,当脱字符在字符类的外部时,脱字符匹配字符串的开头字符。例如,’^[hc]at’ 匹配 hat 和 cat,但只在字符串的开头。
当用在字符类内部时,以下行为适用: REGEXP 和 REGEXP_SUBSTR 当脱字符为字符类中的第一个字符时,它与字符集中字符以外的任何字符匹配。例如,REGEXP ‘[^abc]’ 匹配 a、b 或 c 以外的任何字符。 如果脱字符不是方括号内的第一个字符,那么它匹配脱字符。例如,REGEXP_SUBSTR ‘[a-e^c]’ 匹配 a、b、c、d、e 和 ^。 SIMILAR TO 对于 SIMILAR TO,脱字符被视作减号运算符。例如,SIMILAR TO ‘[a-e^c]’ 匹配 a、b、d 和 e。 $ 当与 REGEXP 和 REGEXP_SUBSTR 一起使用时,匹配字符串的结尾字符。例如,SIMILAR TO ‘cat$’ 匹配 cat,但不匹配 catfish。 当与 SIMILAR TO 一起使用时,它匹配问号。 . 当与 REGEXP 和 REGEXP_SUBSTR 一起使用时,匹配任何单个字符。例如,REGEXP ‘a.cd’ 匹配以 a 开头并以 cd 结尾的含有四个字符的任何字符串。 当与 SIMILAR TO 一起使用时,它匹配句点 (.)。
在字符集中使用冒号来指定子字符类。例如,’[[:alnum:]]’。

3 正则表达式:特殊子字符类

子字符类是嵌入到较大字符类中的特殊字符类。除了自定义字符类(在其中定义要匹配的字符集,例如,[abxq4] 将匹配字符集限制为 a、b、x、q 和 4)以外,SQL Anywhere 还支持子字符类,例如,大部分 POSIX 字符类。例如,[[:alpha:]] 表示所有大写和小写字母的集合。

REGEXP 搜索条件和 REGEXP_SUBSTR 函数支持下表中的所有语法约定,但 SIMILAR TO 搜索表达式不支持。SIMILAR TO 支持的约定在 SIMILAR TO 列中有一个 Y。

在 REGEXP 中,当使用 REGEXP_SUBSTR 函数时,可以使用脱字符对子字符类取非。例如,[[:^alpha:]] 匹配除字母字符以外的所有字符的集合。

子字符类 其它信息 SIMILAR TO
[:alpha:]
匹配当前归类中的大写和小写字母字符。例如,’[0-9]{3}[[:alpha:]]{2}’ 匹配三个数字,后跟两个字母。

[:alnum:]
匹配当前归类中的数字、大写和小写字母字符。例如,’[[:alnum:]]+’ 匹配含有一个或多个字母和数字的字符串。

[:digit:]
匹配当前归类中的数字。例如,’[[:digit:]-]+’ 匹配含有一个或多个数字或横线的字符串。同样,’[^[:digit:]-]+’ 匹配含有一个或多个不是数字或横线的字符的字符串。

[:lower:]
匹配当前归类中的小写字母字符。例如,’[[:lower:]]’ 不匹配 A,因为 A 为大写。

[:space:]
匹配单个空格 (’ ‘)。例如,以下语句搜索 Contacts.City 以查找任何名称为两个词的城市:
SELECT City
FROM Contacts
WHERE City REGEXP ‘.[[:space:]].‘;
复制示例

[:upper:]
匹配当前归类中的大写字母字符。例如,’[[:upper:]ab]’ 与以下其中一项匹配:任何大写字母、a 或 b。

[:whitespace:]
匹配一个空白字符,例如,空格、制表符、换页符和回车符。

[:ascii:]
匹配任何七位的 ASCII 字符(0 到 127 之间的顺序值)。

[:blank:]
匹配一个空白区或水平制表符。
[[:blank:]] 等效于 [ \t]。

[:cntrl:]
匹配顺序值小于 32 或字符值为 127 的 ASCII 字符(控制字符)。控制字符包括换行符、换页符、退格符,等等。

[:graph:]
匹配打印字符。
[[:graph:]] 等效于 [[:alnum:][:punct:]]。

[:print:]
匹配打印字符和空格。
[[:print:]] 等效于 [[:graph:][:whitespace:]]。

[:punct:]
匹配其中一个字符: !”#$%&’()*+,-./:;<=>?@[]^_`{|}~.
[:punct:] 子字符类不能包括当前归类中可用的非 ASCII 标点字符。

[:word:]
匹配当前归类中的字母、数字或下划线字符。
[[:word:]] 等效于 [[:alnum:]_]。

[:xdigit:]
匹配字符类 [0-9A-Fa-f] 中的字符。



 <action>
      <ereg regexp="[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[:][0-9]{1,5}" 
            search_in="msg" 
            check_it="true" 
            assign_to="1"/>
      <ereg regexp=".*" 
            search_in="hdr" 
            header="Contact:" 
            check_it="true" 
            assign_to="6"/>
      <ereg regexp="o=([[:alnum:]]*) ([[:alnum:]]*) ([[:alnum:]]*)"
            search_in="msg" 
            check_it="true" 
            assign_to="3,4,5,8"/>
    </action>
  </recv>

[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[:][0-9]{1,5}
这个就是匹配ip。先是匹配1到3个数字,再匹配点dot,在是1到3个数字,再一个点。。。匹配完点分十进制后,匹配一个[:],用来拿端口,长度1到5位。

例 ./sipp -sf ../regexp.xml -m 1 -i 192.168.92.3 -p 7066 -d 5000 -s 1080 192.168.92.109:5062

服务器

./sipp -sf ../branchs_1.xml -i 192.168.92.79 -inf ../test_2017-08-1.csv
客户端
./sipp -sf ../branchc_1.xml -i 192.168.92.3 -p 5060 -inf ../test_2017-08-11.csv -s 3002 192.168.92.79

REFERENCE
http://pubs.opengroup.org/onlinepubs/007908799/xbd/re.html
http://sipp.sourceforge.net/doc/cn-reference.pdf
http://blog.163.com/yi_yixinyiyi/blog/static/13628688920116146204413/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值