ominous2012的个人空间 https://blog.eetop.cn/934213 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

TCL正则表达式2

已有 2121 次阅读| 2016-1-28 22:19 |个人分类:tcl

1。*,+,?为量词,默认与尽可能多的字符进行匹配。后面加?,变为非贪婪,从而与尽可能短的字符进行匹配。+和{3,7}为贪婪量词。+?和{3,7}?为非贪婪量词。注意,贪婪和非贪婪不能混用,否则会引起歧义。

2.逆向引用,是在\后面跟一个前面的子表达式的编号
比如匹配the the
\m(\w+)\M\s+\m\1\M


3.非捕获子表达式
格式(?:expression)

4.regexp {(0-9]+) *([a-z]+)} "walk 10 km" a b c
第一个参数插入与整个正则表达式匹配的子字符串
第二个参数插入与捕获到的第一个字表达式想匹配的子字符串
第三个参数插入与捕获到的下一个字表达式想匹配的子字符串,以此类推

a:10 km  b:10 c:km
regexp 还可以指定其他选项,-start 选项,在后面跟一个字符串的字符索引,指定regexp从该位置开始查找匹配。
-all选项告诉regexp在字符串中查找尽量多次的匹配,并返回总的匹配次数。
-nocase 指定模式中的字母在字符串中查找匹配是不区分大小写。
-indice选项致命二外的变量不应该用于存放匹配的子字符串的值,而是存放给出子字符串范围的首字符的索引列表。执行下面的命令house,a的值为5 9,b为5 6 ,c为 8 9
regexp -indice {([0-9]+) *([a-z]+)} "walk 10 km" a b c
-inline 选项让regexp把匹配变量返回为一个数据列表,
regexp {(【0-9】+) *(【a-z]+)}  “walk 10 km"
=> {10 km} 10 km
-line 选项激活区分换行的匹配,指定这个选项后,[^括号表达式和绝不会与新行匹配,^原子除了他的普通功能外,域新行后的空字符串匹配。$原子除了他的普通功能外,与新行前的空字符串匹配
regexp -all -line -- {^[[:blank:]]*ERROR}  $text
返回所有以ERROR字符串开头的行数
--明确标志选项结束。
4.regsub 用于替换
regsub there ”They live there lives" their x
=> 1
regsub的第一个参数是正则表达式模式第二个参数是输入的字符串,regsub返回1代表字符串与模式匹配,返回0代表不匹配。第三个参数为替换字符串
最后一个参数存放替换后的新字符串
x为They live their lives,返回值为1
-all 替换所有匹配字符
regsub -all  a ababa zz x
=> x:zzbzzbzz  
-nocase不区分大小写
-start指定字符串中一个字符的索引,从指定字符处开始查找匹配
-line 启动区分换行的匹配
如果替换字符串中包含&或\0,其中的&或\0会被途欢为域正则表达式相匹配的子字符串,如果是\n形式的序列出现在途欢字符串中,n为十进制数,与第n个捕获的子表达式相匹配的子字符串会替换掉这个\n
regsub -all -- a|b axaab && x
将字符串中所有的a和b都写两遍
=》aaxaaaabb
regsub -all -- (a+)(ba*) aabaabxab {z\2} x
=>zbaabxzb

点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 1

    评论
  • 529

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 04:28 , Processed in 0.026795 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部