正则匹配可否从字符串最后一个向前来匹配?
本帖最后由 cdzjf 于 2022-5-27 19:57 编辑比如这个字符串
u='der=xeke{lseo=83,ue=00;},sleng={elgoeg{elglq=9}lgev}jlegob'
我想匹配最后一个}前面或者后面的所有,但正则是从第一个字符串开始往后匹配,如何可以让他从最后一个往前,匹配到第一个}就不继续匹配了?
或者我需要最后一个}后面的jlegob这些字符串,应该怎样匹配
给你个借鉴
用正则表达式匹配网址URL中最后一个反斜杠/后面的内容
测试内容:
http://b174.photo.store.qq.com/psb?/V10CD1yE07IujV/eMbKzb1rzHY56uejjCDlOsR3hhQY53jBobTL7Zh9lUg!/c/dK4AAAAAAAAA&bo=fAF0AAAAAAAFACo!&rf=mood_app
https://www.zhihu.com/question/37415530/answer/118246241?group_id=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 给你个借鉴
用正则表达式匹配网址URL中最后一个反斜杠/后面的内容
测试内容:
http://b174.photo.store.qq.com/psb?/V10CD1yE07IujV/eMbKzb1rzHY56uejjCDlOsR3hhQY53jBobTL7Zh9lUg!/c/dK4AAAAAAAAA&bo=fAF0AAAAAAAFACo!&rf=mood_app
https://www.zhihu.com/question/37415530/answer/118246241?group_id=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 给你看看这个https://www.runoob.com/regexp/regexp-syntax.html
{:10_256:} 你把字符串反转一下不就好了?s[::-1] qq1151985918 发表于 2022-5-28 14:06
你把字符串反转一下不就好了?s[::-1]
你这个其实效果是一样的,不信你代进去试试看 没太明白,你直接把想要的结果贴出来 看你描述,似乎不用正则,也可以s = "u='der=xeke{lseo=83,ue=00;},sleng={elgoeg{elglq=9}lgev}jlegob'"
s
'jlegob'
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这个字符串就停止就好了 本帖最后由 suchocolate 于 2023-1-14 08:56 编辑
cdzjf 发表于 2023-1-13 21:32
SUTYGKu5KJxyPKH+ynt2XyXCzxwad6tby7fq/9lse0AsafXald0B9jti+DVWpPmVJumriRWx9Z9/8ULAn2tquYruz2hvdxBRkE ...
s = 'your string'
print(s.split('SUTYG')[-1])) # 原始字符串分隔
print(re.split('SUTYG', s)[-1])# re分隔
print(re.findall('.*SUTYG(.*)$', s))# 匹配结尾,假定你的原字符串是一个整体
页:
[1]