加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在newLISP中使用正则表达式 二

发布时间:2020-12-14 02:04:00 所属栏目:百科 来源:网络整理
导读:反斜线(元字符之一) 因为元字符是特殊字符,正常使用时不会被作为普通字符用来搜索,而是使用其特殊含义,比如一对方括号表示字符集合。但是如果想对元字符本身进行搜索,就需要转义。比如 (regex "[text]" "ab[text]cd")("[text]" 2 6) 因为想要匹配

反斜线(元字符之一)

因为元字符是特殊字符,正常使用时不会被作为普通字符用来搜索,而是使用其特殊含义,比如一对方括号表示字符集合。但是如果想对元字符本身进行搜索,就需要转义。比如

>  (regex "[text]" "ab[text]cd")
("[text]" 2 6)
因为想要匹配的是[text]子串,所以前面用反斜线转义,在newlisp的regex规则中,双引号内必须用来表示反斜线。

同样,由于pcre定义了一些字符类别,都是用引导,比如d 表示查找数字字符,在双引号中也需要写成d

> (regex "d{1,3}" "qwerty5679asdfg")
("567" 6 3)
如果在双引号里面包含一个"字符,需要用单个反斜线引导,写成:",这是newlisp的特殊规则。
> (regex """ "abc"def")  
(""" 3 1)

花括号(元字符之一)

pcre中成对的的{}里面包含了两个数字,一个代表出现的最少次数,一个代表最多次数。当然后一个参数可以没有,代表精确匹配,所以

{n,m} 代表最少次数和最多次数范围内的匹配

{n} 代表n此精确匹配

{n,} 代表>= n次的匹配


不过regex也可以用{ } 来包含一个search pattern,下面这个例子不再用双引号了。

> (regex {(abc)} "xyz(abc)xyz")
("(abc)" 3 5)
此时,{ } 内部的双引号不需要转义,直接用
> (regex {"} "abc"def")
(""" 3 1)

因此推荐使用{},可以少写一个,


因此如果在双引号里面表示将元字符作为普通字符使用,需要前缀,而在{}里面只需要一个即可。下面是例子:

> (directory "/home/dean/Downloads/x" {.$})
("." "..")

> (directory "/home/dean/Downloads/x" ".$")
("." "..")



[text] [/text]也和{ } 有相同的功能,不过打字太多,不推荐。


regex-compregex-comp是一个可以预先编译正则表达式以加快速度的函数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读