- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在lisp中应用正则表达式
[序]
? 长久以来,文本的编辑一直是lisp编程的重点、难点之一,有不少活跃在xdcad和明经通道论坛的高手为此写了不少有代表性的文字处理工具,比较知名的如:?? 。而我自己也写过不少这方面的程序,多数没有发表,少数零星地发布在以上两个论坛。但由于lisp对文本编辑(*注)的支持函数不够丰富,而实际工作中遇到的情况又多种多样,使得诸多lisp程序对文本编辑的深度和灵活性上还有很多不足之处,不免遗憾。
为此,我一直以来寻求更好的方法,最终只有一个答案:正则表达式。正则表达式对文本编辑很强,有多强?看看vb或vbs参考就知道,也可上网一搜。但是,也许本人孤陋寡闻(或是有的高手潜水潜得很深),在网上一直没有见过在lisp中比较充分地应用正则表达式的程序。其实,我很早就想将正则表达式移植到lisp里面来,近几日一鼓作气,终有小成。谨奉献两个函数:(xxexp)(xxexpr),这两个函数提供了正则表达式的接口,使在lisp中得以应用其强大的功能成为可能。?????????????????????????????????
?―――――梁雄啸.2007.7
?
*注:“文本”在本文均指对文本字符串内容,非指文本实体(0 . “*TEXT”)
函数下载地址: /?屠文双刀.rar_67el0c7bs5bt2bsp0crn1btrml0c2bk5btmn0cmqju14z97f14z
[函数介绍]
函数:(xxexp pat str key)
功能 对字符串进行正则表达式匹配测试.
参数: pat = 正则表达式模式 ,对应vbs正则表达式的模式(expression)。说明: \ 号要用 \\ 替代.
???? str = 字符串
???? key = i g m , i不区分大小写(Ignorecase),g全局匹配(Global).”m”多行模式(Multiline),以上几个关键字可以组合使用,或用 ””.
返回: 返回匹配的字符列表,或无一匹配返回nil
函数:(xxexpr pat str nstr key)
功能 对字符串进行正则表达式替换.
参数: pat = 正则表达式模式 ,对应vbs正则表达式的模式(expression)。说明: \ 号要用 \\ 替代.
???? str = 被替换字符串
???? nstr = 替换字符串
???? key = i g m , i不区分大小写(Ignorecase),g全局匹配(Global).”m”多行模式(Multiline),以上几个关键字可以组合使用,或用 ””.
返回 :返回替换后的字符串.
[正则表达式模式]
正则表达式核心就是其模式(expression),此部分资料可从网上或vb,vbs参考中得到。以下是vbs参考中关于模式的描述列表。在xxexp,xxexpr函数应用中,注意”\”符要按”\\”来写。
?
字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,n 匹配字符 n。\n 匹配一个换行符。序列 \\ 匹配 \ 而 \( 则匹配 (。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 \n 或 \r 之后的位置。 $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的 Multiline 属性,$ 也匹配 \n 或 \r 之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 z 以及 zoo。* 等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,zo+ 能匹配 zo 以及 zoo,但不能匹配 z。+ 等价于 {1,}。 ? 匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 do 或 does 中的do 。? 等价于 {0,1}。 {n} n 是一个非负整数。匹配确定的 n 次。例如,o{2} 不能匹配 Bob 中的 o,但是能匹配 food 中的两个 o。 {n,} n 是一个非负整数。至少匹配n 次。例如,o{2,} 不能匹配 Bob 中的 o,但能匹配 foooood 中的所有 o。o{1,} 等价于 o+。o{0,} 则等价于 o*。 {n,m} m 和 n 均为非负整数,其中n = m。最少匹配 n 次且最多匹配 m 次。例如,o{1,3} 将匹配 fooooood 中的前三个 o。o{0,1} 等价于 o?。请注意在逗号和两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的
您可能关注的文档
最近下载
- 企业内控应用手册之信息系统风险控制矩阵.pdf VIP
- 复合场例题与习题(含答案).doc VIP
- 2024年昆明市官渡区国有资产投资经营有限公司人员招聘笔试备考题库及答案解析.docx VIP
- 2025年四川广安市广安区白市镇人民政府选用片区纪检监督员1人备考题库及答案解析.docx VIP
- 2025四川广安市广安区花桥镇人民政府选用片区纪检监督员1人考试备考题库及答案解析.docx VIP
- 汇川PN伺服Epos使用(FB_Servo_111)使用方法详解_带程序_V2.pdf VIP
- 地基GPS遥感大气可降水量:原理、方法与气象应用的深度剖析.docx VIP
- 云南昆明市官渡区国有资产投资经营有限公司招聘笔试题库2023.pdf VIP
- 某某某公司特变电工股份有限公司廉政手册.doc VIP
- 《城市热岛效应》.ppt VIP
文档评论(0)