找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 912|回复: 7

[已解决] 【已解决】关于正则表达式

[复制链接]

已领礼包: 10个

财富等级: 恭喜发财

发表于 2021-1-26 21:56:07 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 lslsq 于 2021-1-26 22:59 编辑

测试字符串"DCM2021012603-E210348-3C壶身支架-DC20210124002-01"
使用正则表达式 (?<=DCM20[0-9]{8}-|_).+(?=-DC20) 可以提取到想要的字符串,测试字符中的”E210348-3C壶身支架”
但是现在使用 XD::String:RegExpS 发现不能正常提取
同时用<一刀屠文>xxexp 也不行,想到把字符串转换成表,目的倒是可以达到,但是挺麻烦的。
求助有没有别的方法,稍微简便一点的方法,/抱拳


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

已领礼包: 40个

财富等级: 招财进宝

发表于 2021-1-26 22:00:40 | 显示全部楼层
命令: (xdrx-string-regexps "(?<=DCM20[0-9]{8}-|_).+(?=-DC20)" a)
("E210348-3C壶身支架")

点评

感谢,之前一直用XD::String:RegExpS,没关注到还有xdrx-string-regexps,完美解决  详情 回复 发表于 2021-1-26 22:48

评分

参与人数 1D豆 +5 收起 理由
lslsq + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2021-1-26 22:25:45 | 显示全部楼层
本帖最后由 newer 于 2021-1-26 22:27 编辑

xd::string:regexps 使用的是 VBScript.RegExp 这个支持的表达式不多

二、VBScript中的正则表达式字符


  1. 字符        描述
  2. \        表示下一个字符是特殊字符或文字常量
  3. ^        匹配输入的开头
  4. $        匹配输入的结尾
  5. *        匹配前一个字符零次或多次
  6. +        匹配前一个字符一次或多次
  7. ?        匹配前一个字符零次或一次
  8. .        匹配除换行符以外的任何单个字符
  9. (pattern)        
  10. 匹配并记住这个模式。可以用[0]…[n]从结果的matches集合中获取匹配到的字符串。要匹配括号本身,在前面加上斜杠-用"\("或"\)"

  11. (?:pattern)        匹配但不捕获模式,也就是不会存储匹配结果供以后使用。这可以用于使用"or"字符(|)合并模式的不同部分。例如,"anomal(?:y|ies)"比"anomaly|anomalies"要划算得多
  12. (?=pattern)        当所要搜索的字符串匹配了模式的开头部分时就接着匹配这一部分。非捕获匹配,也就是说不会保存匹配结果供以后使用。例如,"Windows (?=95|98|NT|2000|XP|Vista)"能匹配"Windows Vista"中的Windows而不能匹配"Windows 3.1"中的Windows
  13. (?!pattern)        与上一个相反,这会匹配模式中没有出现的内容。非捕获匹配。例如,"Windows (?!95|98|NT|2000|XP|Vista)"能匹配"Windows 3.1"中的Windows而不能匹配"Windows Vista"中的Windows
  14. x|y        匹配x或y
  15. {n}        准确地匹配n次(n必须是一个非负整数)
  16. {n,}        至少匹配n次(n必须是一个非负整数-注意结尾的逗号)
  17. {n,m}        至少匹配n次,最多匹配m次(m和n必须都是非负整数)
  18. [xyz]        匹配其中包括的任一个字符(xyz表示一个字符集)
  19. [^xyz]        匹配其中不包括的字符(^xyz表示一个字符集的补集)
  20. [a-z]        匹配指定范围内的字符(a-z表示字符的范围)
  21. [^m-z]        匹配指定范围以外的字符(^m-z表示指定范围的补集)
  22. \b        匹配一个单词边界,这个位置在单词和空格之间
  23. \B        匹配一个非单词边界
  24. \d        匹配数字。等价于[0-9]
  25. \D        匹配非数字。等价于[^0-9]
  26. \f        匹配换页符
  27. \n        匹配换行符
  28. \r        匹配回车符
  29. \s        匹配空白,包括空格、制表符、换页符等。等价于"[\f\n\r\t\v]"
  30. \S        匹配非空白的字符。等价于"[^\f\n\r\t\v]"
  31. \t        匹配制表符
  32. \v        匹配纵向制表符
  33. \w        匹配字母、数字,以及下划线。等价于"[A-Za-z0-9_]"
  34. \W        匹配非字符数字。等价于"[^A-Za-z0-9\_]"
  35. \.        匹配.
  36. \|        匹配|
  37. \{        匹配{
  38. \}        匹配}
  39. \[        匹配[
  40. \]        匹配]
  41. \(        匹配(
  42. \)        匹配)
  43. $num        匹配num,其中num是正整数。返回匹配结果的引用
  44. \n        匹配n,其中n是八进制转义符。八进制转义符的长度应为1、2或3
  45. \uxxxx        匹配UNICODE形式的ASCII字符
  46. \xn        匹配n,其中n是十六进制转义符。十六进制转义符必须是两位长度
  47. \\        匹配\
复制代码

点评

是的,之前很少用到零宽度前后的,偶尔用,发现xd::string:regexps用不了  详情 回复 发表于 2021-1-26 22:54

评分

参与人数 1D豆 +3 收起 理由
lslsq + 3 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2021-1-26 22:41:33 | 显示全部楼层
VB 正则表达式不支持 零宽度正回顾后发断言
(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如\b\w+(?<=ing\b)会匹配以ing结尾的单词的前半部分(除了ing以外的部分),例如在查找I am reading.时,它匹配read。
VB 正则不支持 (?<=)


XDRX API 正则是基于PREP的,支持 (?<=)



点评

这么晚了,还有这么多大佬在线,感谢解答  详情 回复 发表于 2021-1-26 22:52

评分

参与人数 1D豆 +3 收起 理由
lslsq + 3 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2021-1-26 22:48:26 | 显示全部楼层
newer 发表于 2021-1-26 22:00
命令: (xdrx-string-regexps "(?

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

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2021-1-26 22:52:11 | 显示全部楼层
marting 发表于 2021-1-26 22:41
VB 正则表达式不支持 零宽度正回顾后发断言
(?

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

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2021-1-26 22:54:39 | 显示全部楼层
st788796 发表于 2021-1-26 22:25
xd::string:regexps 使用的是 VBScript.RegExp 这个支持的表达式不多

二、VBScript中的正则表达式字符

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

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 08:28 , Processed in 0.179729 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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