前几日看了无痕的,想试试看,却出了问题
Matches 集合总返回是只有一个呢?- [code];;;正则表达式字符串.
- ;;功能 对字符串进行正则表达式匹配测试.
- ;;参数: pat = 正则表达式模式 ,对应vbs正则表达式的模式(expression)。说明: \ 号要用 \\ 替代.
- ;; str = 字符串
- ;; key = "i" "g" "m" , "i"不区分大小写(Ignorecase),"g"全局匹配(Global).”m”多行模式(Multiline),以上几个关键字可以组合使用,或用""
- ;;返回: 返回匹配的字符列表,或无一匹配返回nil
- (defun NBTF_RegExP( pat str key / regex s str1)
- (setq regex(vlax-create-object "Vbscript.RegExp")) ;引用正则表达式控件
- (if (wcmatch key "*i*,*I*")
- (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
- (vlax-put-property regex "IgnoreCase" 1)
- )
- (if (wcmatch key "*g*,*G*")
- (vlax-put-property regex "Global" 1) ;匹配方式,全文字匹配
- (vlax-put-property regex "Global" 0)
- )
- (if (wcmatch key "*m*,*M*")
- (vlax-put-property regex "Multiline" 1) ;多行模式
- (vlax-put-property regex "Multiline" 0)
- )
- ;;(setq s str)
- (vlax-put-property regex "Pattern" pat)
- (setq s(vlax-invoke-method regex "Execute" str))
-
- (VLAX-FOR tmp s
- (setq str1 (cons (vlax-get-property tmp "value") str1))
- )
- (vlax-release-object regex)
- str1
- )
[/code]_$ (setq a(NBTF_REGEXP"[+|-]?\\d*\\.?\\d+(e[+|-]*\\d+)*" "abdfsdf-1e4-31++3485..3.1a.38 3..14f-.86e-1d3.a4f8.48" ""))
("-1e4")
_$
_$ |