找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2196|回复: 13

[求助] 关于正则表达式的问题,如何匹配两个字符之间的字符串?

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-11-30 23:02:20 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-30 23:13:11 | 显示全部楼层
本帖最后由 st788796 于 2013-11-30 23:20 编辑

这些怎么都记不住, google 了一下
_$ (xd::string:regexps "[A-Za-z]+|[0-9]+|[A-Za-z]+" "cccdc234ddde" "")
("cccdc" "234" "ddde")
_$ (xd::string:regexps "[0-9]+" "cccdc234ddde" "")
("234")
_$ (xd::string:regexps "[0-9.0-9]+" "cccdc234.233ddde" "")
("234.233")
_$


点评

大师,能通用些吗,不一定都是数字的 比如: str= abc2345 想获得 b 和4 之间 c23 如果写?  详情 回复 发表于 2013-11-30 23:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-11-30 23:24:45 | 显示全部楼层
st788796 发表于 2013-11-30 23:13
这些怎么都记不住, google 了一下
_$ (xd::string:regexps "[A-Za-z]+|[0-9]+|[A-Za-z]+" "cccdc234ddde" ...

大师,能通用些吗,不一定都是数字的

比如:
str= abc2345

想获得 b 和4 之间 c23 如果写?

点评

_$ (xd::string:regexps "\c[2-3]+" "abc2345" "") ("c23") _$  详情 回复 发表于 2013-11-30 23:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-30 23:32:55 | 显示全部楼层
本帖最后由 st788796 于 2013-11-30 23:35 编辑
Lisphk 发表于 2013-11-30 23:24
大师,能通用些吗,不一定都是数字的

比如:

只能对照着说明, 一个个试, 真记不住
_$ (xd::string:regexps "\c[2-3]+" "abc2345" "")
("c23")
_$

点评

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-12-1 00:16:18 | 显示全部楼层
st788796 发表于 2013-11-30 23:32
只能对照着说明, 一个个试, 真记不住
_$ (xd::string:regexps "\c[2-3]+" "abc2345" "")
("c23")

上面的 C 和 4 要是任意字符呢?

点评

太复杂 _$ (xd::string:regexps "\c.+[4]" "addfac22dfdadsf4fdadfa" "\"m\"") ("c22dfdadsf4") _$  详情 回复 发表于 2013-12-1 00:48
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-1 00:48:24 | 显示全部楼层
本帖最后由 st788796 于 2013-12-1 01:15 编辑
Lisphk 发表于 2013-12-1 00:16
上面的 C 和 4 要是任意字符呢?

太复杂
_$ (xd::string:regexps "\c.+[4]" "addfac22dfdadsf4fdadfa" "\"m\"")
("c22dfdadsf4")
_$ (xd::string:regexps "\c.+[4]" "addfac42dfd单放机阿利克送风机阿嫂a!@###dsf4fdadfa" "\"m\"")
("c42dfd单放机阿利克送风机阿嫂a!@###dsf4")
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-1 08:24:00 | 显示全部楼层
本帖最后由 st788796 于 2013-12-1 08:36 编辑

_$ (xd::string:regexps "c.+4" "dadfcfdlksafsa4oi4fas"  "")
("cfdlksafsa4oi4")
_$ (xd::string:regexps "c[\\s\\S]+4" "dadfcfdlksaf放大森林开发大sa4oi4fas"  "")
("cfdlksaf放大森林开发大sa4oi4")

点评

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-12-1 10:45:02 | 显示全部楼层
st788796 发表于 2013-12-1 08:24
_$ (xd::string:regexps "c.+4" "dadfcfdlksafsa4oi4fas"  "")
("cfdlksafsa4oi4")
_$ (xd::string:regex ...

不包括 C 和 4 呢? 怎么写?

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-1 11:02:56 | 显示全部楼层
Lisphk 发表于 2013-12-1 10:45
不包括 C 和 4 呢? 怎么写?

加个 "非"
"[^c].+[^4]"

点评

不对啊 (setq a "abc2434dge") "abc2434dge" (xd::string:regexps "[^c].+[^d]" a "") 取c和d之间不包括c和d ("abc2434dge")  详情 回复 发表于 2013-12-1 12:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2013-12-1 12:16:01 | 显示全部楼层
st788796 发表于 2013-12-1 11:02
加个 "非"
"[^c].+[^4]"

不对啊

(setq a "abc2434dge")
"abc2434dge"


(xd::string:regexps "[^c].+[^d]" a "")  取c和d之间不包括c和d
("abc2434dge")

点评

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

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-1 12:53:23 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-12-1 12:58 编辑
Lisphk 发表于 2013-12-1 12:16
不对啊

(setq a "abc2434dge")


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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2014-3-14 23:24:27 | 显示全部楼层
str= abc2345--》想获得 b 和4 之间 c23 如果写?

替换提取出来就行
pat 这么写    "^.*b(.*)4.*$"

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-3-15 09:01:04 | 显示全部楼层
aeo 发表于 2014-3-14 23:24
str= abc2345--》想获得 b 和4 之间 c23 如果写?

替换提取出来就行

正则表达式的强大毋庸置疑,不过 Lisp 中还是要有选择的使用为上

  1. (defun String:Between (str Start End / pos)
  2.   (if (and (setq pos (vl-string-search Start str))
  3.            (if (> (ascii (substr str (1+ pos) 1)) 128)
  4.              (setq pos (+ 3 pos))
  5.              (setq pos (1+ pos))
  6.            )
  7.            (setq str (substr str pos))
  8.            (setq pos (vl-string-search End str))
  9.            (setq str (substr str 1 pos))
  10.       )
  11.     str
  12.     nil
  13.   )
  14. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 00:39 , Processed in 0.200517 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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