明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1130|回复: 13

[提问] 有请正则表达式大佬指导,如何获得含通配符文字的定位?

[复制链接]
发表于 2023-10-22 22:41:00 | 显示全部楼层 |阅读模式
本帖最后由 masterlong 于 2023-10-22 22:44 编辑

曾经两次认真的学习正则
当时觉得掌握了
然而几天之后又忘得干干净净
实在没兴趣再来一遍了
直接向大佬请教吧

一个含通配符的查找文字STRA
比如“@#*#`@”
通配符采用wcmatch函数规则

一个被查找的目标文字STRB
比如
"a122@的房顶上放bbb^^vv45@hfd与用途B21@C"

希望获得
所有匹配位置的起点和字长
((1 5) (21 4) (34 4))
或者获得所有匹配的段落
("a122@" "v45@" "B21@")
能够得到第1处匹配也可以

如果不存在匹配
返回nil

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-10-23 10:36:45 | 显示全部楼层
masterlong 发表于 2023-10-23 09:26
上班开始折腾到现在
始终无法安装

看来用win7的还不在少数啊。
默认 win7 的 httprequest 不支持 https. 需要安装下面的补丁。

https://atlisp.cn/new/support/faq#orgee9e079

https://atlisp.cn/stable/bin/MicrosoftEasyFix51044.msi


回复 支持 1 反对 0

使用道具 举报

发表于 2023-10-24 11:44:33 | 显示全部楼层
masterlong 发表于 2023-10-24 11:06
谢谢
回头我先写个转化函数
再请vitalgg指导

@lisp 安装 问题 是国外服务器延时严重引起的

用下面的代码或原来代码中的 org 改为 cn .即可。
  1. (progn(vl-load-com)(setq s strcat h "http" o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://atlisp.""cn/@"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))

发表于 2023-10-22 23:09:04 | 显示全部楼层
本帖最后由 vitalgg 于 2023-10-22 23:35 编辑

你这个 * 在wcmatch中代表所有字符,不是其它正则中表示的前一个字符规则的重复

  1. 命令: (string:regexp-search "a122@的房顶上放bbb^^vv45@hfd与用途B21@C" "\\D\\d+@" "g")
  2. ((0 5 "a122@") (16 4 "v45@") (26 4 "B21@"))
复制代码



 楼主| 发表于 2023-10-22 23:35:37 来自手机 | 显示全部楼层
正则已经忘光了,我理解是首先把STRA转化成正则表达式,然后再“执行匹配”
 楼主| 发表于 2023-10-22 23:37:56 来自手机 | 显示全部楼层
wcmatch只能判断T/NIL   VL字串定位函数不支持通配   
 楼主| 发表于 2023-10-22 23:57:04 来自手机 | 显示全部楼层
感谢vitalgg,很接近我的预期了,再解决掉WC函数规则转正则规则,以及字长计算,这个问题就算解决了
 楼主| 发表于 2023-10-23 09:26:13 | 显示全部楼层
上班开始折腾到现在
始终无法安装

"WinHttp.WinHttpRequest: 操作超时\r\n"
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)。

不知道是网络慢啊还是啥原因
等晚上人少再说吧
 楼主| 发表于 2023-10-23 15:21:23 | 显示全部楼层
安装不了原来是系统不匹配的问题
难怪

上午我走马观花扫了一下正则表达式的规则
感觉我的需求中最核心的难点
【将wcmatch表达式翻译成正则表达式】
实现的难度极大
【必须】是【精通正则】才【有可能】搞定
发表于 2023-10-23 16:19:47 | 显示全部楼层
wc的规则有限,wc 可以转正则,正则不可以转wc
 楼主| 发表于 2023-10-23 16:21:54 | 显示全部楼层
回过头想想
直接让程序支持正则算了
虽说我不懂
搭建一个调用通道而已
应该还是能做到的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 08:33 , Processed in 0.191845 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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