找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1364|回复: 2

[求助] 关于正则表达式的问题

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-8-6 13:18:45 | 显示全部楼层 |阅读模式

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

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

×
看了论坛很多资料,知道正则表达式功能很强大,也试着用晓东函数库的函数自己练习下,今天突然想起,我们可以很容易的找到匹配的文字,可是能否也找到这个匹配的文字在字符串具体的哪个位置吗?

比如,str=晓东CAD, 匹配搜索查找 CA, 能同时也返回C开始的位置吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-8-6 13:44:29 | 显示全部楼层
本帖最后由 Love-Lisp 于 2013-8-6 13:52 编辑

参看如下函数就知道如何得到位置了
  1. ;参数 string = 字串
  2. ;;     Express = 正则表达式
  3. ;;     key = 字母 i I m M g G的组合字串
  4. ;;          i/I = 忽略大小写 m/M = 多行搜索 g/G = 全文搜索
  5. ;;测试 (RegExSearch "晓东CAD" "CA" "g") 返回 ((2 2 "CA"))
  6. (defun RegExSearch (STRING EXPRESS KEY / REGEX S POS LEN STR L)
  7.   (setq RegEx (vlax-create-object "Vbscript.RegExp"))
  8.   (if (and key (WCMATCH key "*g*,*G*"))
  9.     (vlax-put-property regex "Global" 1)
  10.     (vlax-put-property regex "Global" 0)
  11.   )
  12.   (if (and key (WCMATCH key "*i*,*I*"))
  13.     (vlax-put-property regex "IgnoreCase" 1)
  14.     (vlax-put-property regex "IgnoreCase" 0)
  15.   )
  16.   (if (and key (WCMATCH key "*m*,*M*"))
  17.     (vlax-put-property regex "Multiline" 1)
  18.     (vlax-put-property regex "Multiline" 0)
  19.   )
  20.   (vlax-put-property regex "Pattern" ExPress)
  21.   (setq s (vlax-invoke regex 'Execute string))
  22.   (vlax-for o s
  23.     (setq pos (vlax-get-property o "FirstIndex")
  24.           len (vlax-get-property o "Length")
  25.           str (vlax-get-property o "value")
  26.     )
  27.     (setq l (cons (list pos len str) l))
  28.     (princ (strcat "\n文字位置 = "
  29.                    (itoa pos)
  30.                    "  文字长度 = "
  31.                    (itoa len)
  32.                    "  值 = \""
  33.                    str
  34.                    "\""
  35.            )
  36.     )
  37.   )
  38.   (vlax-release-object RegEx)
  39.   (reverse l)
  40. )



评分

参与人数 2D豆 +10 收起 理由
Lisphk + 5 热心帮忙奖!
wowan1314 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

发表于 2013-8-6 21:40:45 | 显示全部楼层
_$ (vl-string-search "CA" "晓东CAD"  0)
4
_$
汉字是两个字节
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 14:54 , Processed in 0.374240 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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