434939575 发表于 2014-10-6 21:26:09

关于过滤选择文字的一点巧合

本帖最后由 434939575 于 2014-10-6 21:28 编辑

首先感谢:露水的帖子。继续感谢:ZZXXQQ的指导。
我的目的过滤选择:A001    B002       不选D001   E002*******(defun c:tt22()
(setq ss (ssget '((1 . "00#" )    )))
)TT22测试结果:A001    B002   C004    D001   E002*******全部选上了。(defun c:tt2()
(setq ss (ssget '((1 . "00#" )    )))
)TT2测试结果:A001    B002 正确选上了。

感觉是小写优先写就好了。这个我弄了好久。大家不要笑。

yoyoho 发表于 2014-10-7 15:11:01

感谢楼主分享经验!

自贡黄明儒 发表于 2014-10-8 16:38:48

估计是按(ascii "a")大小来的

cdma2546 发表于 2014-10-8 17:31:11

这应该是正则相关的知识,不会的童鞋可以补下正则常用符号,这样自己就可以扩充很多和文字过滤有关的代码来...

434939575 发表于 2014-10-8 19:47:03

感谢大家关注。(ascii "a")。正则常用符号。这些我都不了解

ll_j 发表于 2014-10-9 09:10:37

你这个结果是对的,但表达式还是错的,所以说,结果只是巧合,并不是所说是ascii码的问题。
正确的写法应该是"00#",括号中次序无关。
减号在你的括号中作为连字符用,代表一个范围,这里的范围起始与ascii码有关,范围起始必须从小到大,大写字符ascii码小,所以实际上是其中包括所有大写字符和小写字符ab。
(注:这里有三个连字符,分别表达的范围为、、,其中第二个连字符无意义,第一个和第三个相互重叠。)
而因为连字符表达的区段约束范围很小,刚好是需要的范围,所以正确是一种“巧合”,用连字符的正确写法应该是,如果取ABCabc则为(或。
附图是R14关于wcmatch函数的帮助,可以看看。

ivde 发表于 2014-10-9 09:16:04

ll_j 发表于 2014-10-9 09:10
你这个结果是对的,但表达式还是错的,所以说,结果只是巧合,并不是所说是ascii码的问题。
正确的写法应该 ...

一直这样理解所以没遇到过"巧合”

hrbustmqc 发表于 2015-5-20 01:07:54

文字过滤mark
页: [1]
查看完整版本: 关于过滤选择文字的一点巧合