CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2020 开发者帮助

wcmatch (AutoLISP)

2024-5-18 18:18| 发布者: admin| 查看: 19| 评论: 0|原作者: admin|来自: AutoCAD

wcmatch (AutoLISP)

对字符串执行通配符模式匹配

支持的平台:Windows 和 Mac OS

签名

(wcmatch str pattern)
str

类型:字符串

要比较的文本值。比较区分大小写,因此大写和小写字符必须匹配。

模式

类型:字符串

str 匹配的模式。该模式可以包含通配符表中显示的通配符模式匹配字符。您可以在模式中使用逗号来输入多个模式条件。仅比较 strpattern 的前 500 个字符(大约);超出此范围的任何内容都将被忽略。

返回值

类型:字符串或 nil

如果 strpattern 匹配,则返回 ;否则,返回 。wcmatchTwcmatchnil

通配符

字符

定义

#(磅)

匹配任何单个数字。

@(在)

匹配任何单个字母字符。

.(句点)

匹配任何单个非字母数字字符。

*(星号)

匹配任何字符序列(包括空字符序列),并且可以在搜索模式中的任何位置使用:开头、中间或结尾。

?(问号)

匹配任何单个字符。

~(波浪号)

如果它是模式中的第一个字符,则它与除模式之外的任何字符匹配。

[...]

匹配所括的任意一个字符。

[~...]

匹配任何未括起来的单个字符。

- (连字符)

在括号内用于指定单个字符的范围。

,(逗号)

分隔两个模式。

`(反向引用)

转义特殊字符(按字面意思读下一个字符)。

言论

这两个参数都可以是带引号的字符串或字符串变量。将 AutoLISP 函数返回的变量和值用于 strpattern 值是有效的。

若要测试字符串中的通配符,可以使用单反引号字符 () 来转义该字符。转义意味着单个反向引号后面的字符不被读取为通配符;按其面值进行比较。例如,若要在字符串“”中的任意位置搜索逗号,请输入以下命令:`Name

(wcmatch "Name" "*`,*")
nil

C 和 AutoLISP 编程语言都使用反斜杠 (\) 作为转义字符,因此需要两个反斜杠 (\\) 才能在字符串中生成一个反斜杠。若要测试“”中任意位置的反斜杠字符,请使用以下函数调用:Name

(wcmatch "Name" "*`\\*")
nil

括在括号 ( . . . ) 中的所有字符都是按字面意思阅读的,因此无需转义它们,但以下情况除外:波浪号字符 (~) 仅在不是第一个括号字符时才按字面阅读(如 中 );否则,它被读取为否定字符,这意味着它应该匹配除波浪号后面的字符之外的所有字符(如 中所示)。短划线字符 (-) 仅当是第一个或最后一个括号字符(如 or )或跟在前导波浪号(如 )时,才按字面意思阅读。否则,短划线字符 (-) 用于括号内,以指定特定字符的值范围。该范围仅适用于单个字符,因此匹配 、 、 和 ,并匹配任何单个大写字母。[]"[A~BC]"wcmatch"[~ABC]""[-ABC]""[ABC-]""[~-ABC]""STR[1-38]"STR1STR2STR3STR8"[A-Z]"

如果右括号字符 () 是第一个带括号的字符,或者它跟在前导波浪号后面(如 或 ),则也可以按字面阅读。]"[ ]ABC]""[~]ABC]"

注意:由于 AutoLISP 的未来版本中可能会添加其他通配符,因此最好对模式中的所有非字母数字字符进行转义,以确保向上兼容。

例子

例子

以下命令测试字符串,查看它是否以字符开头N:

(wcmatch "Name" "N*")
T

下面的示例执行三个比较。如果满足三个模式条件中的任何一个,则返回 。测试是:wcmatchT

  • 字符串是否包含三个字符?
  • 字符串是否不包含 ?m
  • 字符串是否以字母“”开头?N

如果满足三个模式条件中的任何一个,则返回:wcmatchT

(wcmatch "Name" "???,~*m*,N*")
T

在此示例中,满足最后一个条件,因此返回 。wcmatchT


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-6-27 15:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部