找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1386|回复: 4

[求助] [求助]:wcmatch字符串比较

[复制链接]
发表于 2007-12-15 11:19:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何比较"wp1""wp2"和"wp1, bv-3x2.5-pc15""wp12, bv-3x2.5-pc15"
希望挑出符合"wp1"的"wp1, bv-3x2.5-pc15""

谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-12-15 11:27:01 | 显示全部楼层
[PHP]wcmatch

一. 功能

    将一个通配样本与一个字符串进行匹配比较。

二. 格式

    (wcmatch string pattern)

三. 说明

    wcmatch函数将一个字符串string与一个通配样本进行比较,看它们是否匹配。如果匹配,本函数返回T;否则返回nil。 String和pattern这两个变元既可以是由双引号引起来的字符串,也可以是变量。 pattern变元中可以包含通配字符,我们将这些通配字符全部列出在下表中。仅对string和pattern中最前面的500个字符进行比较,超过500个字符之后的那些字符会被忽略。

          通配字符表
_______________________________________________

    通配字符      含义
_______________________________________________

     #            匹配任意单个数字字符
_______________________________________________

     @            匹配任意单个字母字符
_______________________________________________

     .(圆点)      匹配任意单个非字母数字字符
_______________________________________________

     *(星号)      匹配任意字符序列,包括一个空字符串,
                 该字符串可以用在搜索样本中的任意位
                 置,包括开头,中间和结尾处。
_______________________________________________

     ?(问号)     匹配任意单个字符
_______________________________________________

     ~ (波浪)      如果该字符是匹配样本中的第一个字符,
                  则匹配除此样本之外的任何东西。
_______________________________________________

     {---}         匹配括号中的任意一个字符
_______________________________________________

     {~---}        匹配不在括号中的任意单个字符
_______________________________________________

      -(连字符)    用在括符之间,指明单一字符的取值范围 _______________________________________________

     ,(逗号)     分开两个样本
_______________________________________________

     ’(反引号)    特殊转义字符(按字义读取随后的字符)_______________________________________________

四. 实例

    例1.(wcmatch "Name "N*") ;;;返回T

    这个实例测试字符串Name是否是用N打头的。

    例2.在测试样本中可以使用逗号分隔多个测试条件,如;

    wcmatch "Name" "???,~ *m* ,N*") ;;;返回T

    如果上述三个测试样本中的任何一个满足条件,wcmatch函数返回T。Name中有一个字符这一条件不成立(为假);Name中不包含字符m不成立(为假);Name是由字符N打开的(为真),所以表达式最后的返回值为T。

    样本的匹配是大小写敏感的,因此,它的大写和小写都必须匹配。在string和pattern中,使用由AutoLISP 函数中返回的变量和值也是有效的。

    例3.为了测试一个字符串中的一个通配符,您可以使用单个反引号来转义字符,转义的意思是指跟在单个反引号(’)后面的字符不当作通配符读取,而按其表面值进行比较。例如,为了测试在字符串Name中的任何位置是否有逗号,可以使用如下表达式:

    (wcmatch "Name" "*',*") ;;;返回nil

    由于其它的通配符可能在将来的AutoLISP版本中会加入,所以在样本中最好给所有的非字母数字字符换码,这样可确保其向上的兼容性。

    例4.由于C和AutoLISP程序设计语言都使用反作斜杠(\)作为换码字符,所以 在字符串中需要使用两个反斜杠(\\)才能产生一个反斜杠(\)。为了测试字符串Name中的任何位置上是否有一个反杠(\),可以使用如下表达式:

    (wcmatch "Name" "* '\\ *") ;;;返回nil

    所有包含在括符[...]中的字符按字义读取,所以不必它们换码。但有一个例外,即波浪符(~)只有在括号中非第一个字符是(如:[A~BC]才按字义读取;否则,作为一个“非”字符读取,这意味着wcmatch函数将匹配所有字符,除跟随在波浪符之后的那些字符之外(如:“[~ABC]”。连字字符(-)仅当它是括符中的第一个字符(如::“[-ABC]”)或是括符中的最后一个字符(如:“[ABC-]”时,才按字义读取;否则,在括符中的连字符用于指定一个专用字符的取值范围,该范围仅限于单个字符的取值,因此,“STR[1-38]”与STR1、STR2、STR3和STR8匹配,而“[A-Z]”与任意单个大写字母匹配。

    如果闭括符内的首字符(如:“[]ABC]”)或者它跟随在一个波浪符之后(如:“[~]ABC]”),则按字义读取。[/PHP]
引自:http://okok.org/lisp/lisp243.htm
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-15 12:04:12 | 显示全部楼层
(setq en "wp1" en2  "wp1,  bv-3x2.5-pc15")
(wcmatch en2 (strcat en "',*"))
这样不行.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-12-15 12:21:04 | 显示全部楼层
(setq en "wp1" en2 "wp1, bv-3x2.5-pc15")
(wcmatch en2 (strcat en "`,*"))

` 是键盘上 1 左边的符号,而不是 ; 号后面的单引号
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-15 14:09:23 | 显示全部楼层
如4楼所言解决了,谢谢解答2位
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 10:54 , Processed in 0.384966 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表