鱼C论坛

 找回密码
 立即注册
查看: 3952|回复: 9

正则匹配可否从字符串最后一个向前来匹配?

[复制链接]
发表于 2022-5-27 16:48:41 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 cdzjf 于 2022-5-27 19:57 编辑

比如这个字符串

u='der=xeke{lseo=83,ue=00;},sleng={elgoeg{elglq=9}lgev}jlegob'

我想匹配最后一个}前面或者后面的所有,但正则是从第一个字符串开始往后匹配,如何可以让他从最后一个往前,匹配到第一个}就不继续匹配了?
或者我需要最后一个}后面的jlegob这些字符串,应该怎样匹配

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-27 17:29:52 | 显示全部楼层
给你个借鉴

用正则表达式匹配网址URL中最后一个反斜杠/后面的内容
测试内容:

http://b174.photo.store.qq.com/p ... Co!&rf=mood_app
https://www.zhihu.com/question/3 ... =751055135773331456
http://zhidao.baidu.com/question/185463932.html
http://billmill.org/bloomfilter-tutorial/
http://music.163.com/

测试结果:

共找到 3 处匹配:
dK4AAAAAAAAA&bo=fAF0AAAAAAAFACo!&rf=mood_app
118246241?group_id=751055135773331456
185463932.html

正则表达式:

[^/]+(?!.*/)

解析:

[^/]+ 表示匹配任意长度的字符串,字符串中不包含有字符 / ,可以把以/分割开的字符串全匹配到.

.*/ 表示任意以/ 结尾的字符串,可以把后在带有/的字符串匹配到,前面再加上?!,再用圆括号包住表示排除掉.(?!.*/).
整个表达式的意思就是匹配任意长度的不包含/ 的字符串,并把以/结尾的字符串排除掉.

原文:https://www.cnblogs.com/OneL1fe/p/5796352.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-27 17:30:47 | 显示全部楼层
给你个借鉴
用正则表达式匹配网址URL中最后一个反斜杠/后面的内容
测试内容:

http://b174.photo.store.qq.com/p ... Co!&rf=mood_app
https://www.zhihu.com/question/3 ... =751055135773331456
http://zhidao.baidu.com/question/185463932.html
http://billmill.org/bloomfilter-tutorial/
http://music.163.com/

测试结果:

共找到 3 处匹配:
dK4AAAAAAAAA&bo=fAF0AAAAAAAFACo!&rf=mood_app
118246241?group_id=751055135773331456
185463932.html

正则表达式:

[^/]+(?!.*/)

解析:

[^/]+ 表示匹配任意长度的字符串,字符串中不包含有字符 / ,可以把以/分割开的字符串全匹配到.

.*/ 表示任意以/ 结尾的字符串,可以把后在带有/的字符串匹配到,前面再加上?!,再用圆括号包住表示排除掉.(?!.*/).
整个表达式的意思就是匹配任意长度的不包含/ 的字符串,并把以/结尾的字符串排除掉.

原文地址:https://www.cnblogs.com/OneL1fe/p/5796352.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-27 20:14:20 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-28 14:06:06 From FishC Mobile | 显示全部楼层
你把字符串反转一下不就好了?s[::-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-1 10:23:53 | 显示全部楼层
qq1151985918 发表于 2022-5-28 14:06
你把字符串反转一下不就好了?s[::-1]

你这个其实效果是一样的,不信你代进去试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-1 10:36:47 | 显示全部楼层
没太明白,你直接把想要的结果贴出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-1 12:28:15 | 显示全部楼层
看你描述,似乎不用正则,也可以
  1. s = "u='der=xeke{lseo=83,ue=00;},sleng={elgoeg{elglq=9}lgev}jlegob'"
  2. s[s.rindex('}') + 1 : -1]
  3. 'jlegob'
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-13 21:32:20 | 显示全部楼层
suchocolate 发表于 2023-1-1 10:36
没太明白,你直接把想要的结果贴出来

SUTYGKu5KJxyPKH+ynt2XyXCzxwad6tby7fq/9lse0AsafXald0B9jti+DVWpPmVJumriRWx9Z9/8ULAn2tquYruz2hvdxBRkEv0k2dr 6AYkw1JygLu5hLWQrpfokF82sFj8jvxN3TCX4ePI9wCUQNrw/v/2GtUZ15OaTPLenNc8Dj8eIm/YxEgn+PjRB1CkfhWzgko8Z7TryEsJeSbyvnnaBT4xh8AOH8NtRtJCw2chDJhogzJ6R+KtOrjPeOEAJqCJw23ePd9CMvQyhcKa33FDZ2McOlipm0y5WwUTTryDjF/9/W

+abkKywHuzhdmEdWxXk6PEygLTXTEYgg4/UBGb/ShPr8aazAGZAOpHMbid7N56xJF5AFVyyDNmFWgZtn01M1tEsrsLMBMX877G23oPaJXENlHsWAIf8wVncoG0QWymsfKEBYVwHyC5uFrZD/1HXO+GXTj4FuXL6//7Ixt3FBCrWZ+fRLvIaLkqBRYd2mWOsrR8nCKZ0XqvL3miKcwxPymW6F+ljpga46NOo7Y4wU7Q5OGKCBNBHh/33F1JigVj3BFcr2+eQf5J+2zHX9/BpCsFdUUlcNXSUTYGh9EBU4dt9aSUlvlDsoqg225wrNuE5zUOGzJ1KZCPF8IskGylQTFlDH4oM73pnwPrHkH+n/7uuWwF/Xmtj7htp9/6ldDtx00w30qG34U9CSFfl5CsMg0wf2pO06PjXI7f5XDpAaOBDf02aWouY03LfLmCVTQ9WkEmRmD/uoymwR3BaHLY9TF/jlfPhTkqNG4b+0XFPMl7DKyvMagujqUCqan/whQn8c

nXGvBnRX/HGjNGcvMOtusXLMH3JAD7YWNx3kQqaTdhHun2FUM6BdBWFzCMkLnRcY7dsjdcUM4XGnRg9OKJbqwFGVE6Lcpx3Ev1J
SUTYGLsAiGdvb6wgyogfU+uo5pGjIZ72jKh5tr1cw+wbaBemRBekiRyySn4eBXvMXYrCe59W5S/sRDqYtJow/KYwg4vHEXgcs
bsW+dyZajSQ0SCBnirnSP



就简单说,SUTYG这个有3个,我需要的是字符串中最后一次出现这个后面的一段,也就是我要上面标注的那部分,这个如果我用re.findall方法的话,就要从第一个开始匹配,而且最后那一段还不知道该怎么去匹配,我如果有个办法可从字符串的末尾往前匹配,只要匹配到了SUTYG这个字符串就停止就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-14 00:04:05 | 显示全部楼层
本帖最后由 suchocolate 于 2023-1-14 08:56 编辑
cdzjf 发表于 2023-1-13 21:32
SUTYGKu5KJxyPKH+ynt2XyXCzxwad6tby7fq/9lse0AsafXald0B9jti+DVWpPmVJumriRWx9Z9/8ULAn2tquYruz2hvdxBRkE ...

  1. s = 'your string'
  2. print(s.split('SUTYG')[-1]))   # 原始字符串分隔
  3. print(re.split('SUTYG', s)[-1])  # re分隔
  4. print(re.findall('.*SUTYG(.*)$', s)[0])  # 匹配结尾,假定你的原字符串是一个整体
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-21 00:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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