被一个正则表达式难住鸟
290 15
[1 楼] CATWK [泡菜]
10-24 11:24
试了AI也写不出来,总是领会不了我的意图,也可能没说清楚
不知道正则表达式能不能实现这个功能:就是匹配以空白开始的三个字母组合加空白再加1到8个字母数字组合,但最终结果不包含之前的三个字母,举个栗子:先匹配" abc xyz123",再匹配"xyz123"
[16 楼] CATWK [泡菜]
10-28 16:32
lhy02 发表于 2025-10-28 14:58
我写的那个曾经在oschina正则表达式测试测试过,成功。你要么先在这个地方把我写的测试一下,再把你实际应用的再测试一下,看是软件不支持的原因还是表达式写错了?


对,要的就是这个效果
那个软件就是coteditor,自定义语法样式,只能是在限定的菜单里写RE,估计功能并不完整
[15 楼] lhy02 [泡菜]
10-28 14:58
CATWK 发表于 2025-10-28 11:22
很遗憾没成功,如果没写错的话,也可能这个软件不支持?
我写的那个曾经在oschina正则表达式测试测试过,成功。你要么先在这个地方把我写的测试一下,再把你实际应用的再测试一下,看是软件不支持的原因还是表达式写错了?

[14 楼] CATWK [泡菜]
10-28 11:22
lhy02 发表于 2025-10-26 11:48
如果支持(?<=)的话,
(?<=\s[a-zA-Z]{3}\s)[a-zA-Z1-9]{1,8}


很遗憾没成功,如果没写错的话,也可能这个软件不支持?
[13 楼] CATWK [泡菜]
10-27 19:02
lhy02 发表于 2025-10-26 11:48
如果支持(?<=)的话,
(?<=\s[a-zA-Z]{3}\s)[a-zA-Z1-9]{1,8}


这个好,我试试支持不支持
[12 楼] lhy02 [泡菜]
10-26 11:48
如果支持(?<=)的话,
(?<=\s[a-zA-Z]{3}\s)[a-zA-Z1-9]{1,8}
lhy02 编辑于 2025-10-26 11:49
[11 楼] Trompette [泡菜]
10-24 19:57
要搜索的模式和最终匹配的模式不一样,必须两次处理
[10 楼] CATWK [泡菜]
10-24 18:02
老鼠不相往来 发表于 2025-10-24 17:22
gemini 能理解啊,代码好像是符合要求的。
' abc xyz123' -> xyz123
' abc ayz123' -> None
' def qwerty' -> None
' def qwertyd' -> Non...


嗯,也是用分组实现的,谢谢
[9 楼] 老鼠不相往来 [泡菜]
10-24 17:22
gemini 能理解啊,代码好像是符合要求的。


' abc xyz123' -> xyz123
' abc ayz123' -> None
' def qwerty' -> None
' def qwertyd' -> None
' xyz 12345678' -> 12345678
' xyz 123456789' -> None
'abc xyz123' -> None
' abc  xyz123' -> None
[8 楼] CATWK [泡菜]
10-24 17:15
ChK 发表于 2025-10-24 15:32
那得看你的应用后台是怎么实现的,如果它用的是和search等效的方法,的确要第二项才是想要的,如果它用的是findall等效的方法,那实际上第一项就是想要的。


好的多谢
[7 楼] ChK [陈年泡菜]
10-24 15:32
CATWK 发表于 2025-10-24 14:55
对,是用了group(1)把后面的abc123摘出来么?不用group不行吧,我这个是需要在一个软件配置菜单里写,恐怕没法写python语句啊

那得看你的应用后台是怎么实现的,如果它用的是和search等效的方法,的确要第二项才是想要的,如果它用的是findall等效的方法,那实际上第一项就是想要的。
[6 楼] CATWK [泡菜]
10-24 14:55
ChK 发表于 2025-10-24 14:17
是这个效果吗?


对,是用了group(1)把后面的abc123摘出来么?不用group不行吧,我这个是需要在一个软件配置菜单里写,恐怕没法写python语句啊
[5 楼] 臭手 [禁言中]
10-24 14:54
CATWK 发表于 2025-10-24 12:13
其实就是需要匹配xyz123,但是如果写 \s[a-zA-Z1-9]{1,8} 结果还会匹配到abc,怎么能排除这个abc呢?

你这个 \s[a-zA-Z1-9]{1,8} 式子里的{1,8}是啥意思? 偶的理解是匹配前面[xxx]里面的内容1到8次啊,它肯定会匹配到abc的吧?如果想表达数字1-8是不是应该用[]啊? {}是限位或限制匹配次数的符号吧。
反正偶用前面那个公式简单试了试是只会匹配出xyz123来,abc是匹配不上的。

另外如果还不行的话您了再试试反向匹配的?!和?:,这俩偶用得少也不太熟悉,但它是排除性的匹配。
一会要开会没时间细聊了,具体怎么用您自己查查吧。
[4 楼] ChK [陈年泡菜]
10-24 14:17
是这个效果吗?
[3 楼] CATWK [泡菜]
10-24 12:13
臭手 发表于 2025-10-24 12:00
貌似还是没说太清楚啊,“最终结果”是指什么意思? 整个数字是整体是啥样的?
只说空格加三个字母再加1到8的话,那比较简单:\s[a-z]{3}\s[a-z]{3}[1-8]就行,这可以匹配上你说的" abc xyz123"。匹配"xyz123"也简单...


其实就是需要匹配xyz123,但是如果写 \s[a-zA-Z1-9]{1,8} 结果还会匹配到abc,怎么能排除这个abc呢?
[2 楼] 臭手 [禁言中]
10-24 12:00
CATWK 发表于 2025-10-24 11:24
试了AI也写不出来,总是领会不了我的意图,也可能没说清楚
不知道正则表达式能不能实现这个功能:就是匹配以空白开始的三个字母组合加空白再加1到8个字母数字组合,但最终结果不包含之前的三个字母,举个栗子:先匹配" abc xyz123",再匹配"xyz123"

貌似还是没说太清楚啊,“最终结果”是指什么意思? 整个数字是整体是啥样的?

只说空格加三个字母再加1到8的话,那比较简单:\s[a-z]{3}\s[a-z]{3}[1-8]就行,这可以匹配上你说的" abc xyz123"。匹配"xyz123"也简单,但啥叫先匹配"  abc xyz123"再匹配"xyz123"? 这俩需要同时匹配还是可以有先后顺序的执行? 那个xyz123是每次都会跟着abc后面的吗?
臭手 编辑于 2025-10-24 12:03