在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]也和{ } 有相同的功能,不过打字太多,不推荐。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |