鱼C论坛

 找回密码
 立即注册
查看: 122|回复: 3

使用正则怎样才可以向后匹配到第某个出现的字符串呢

[复制链接]
发表于 2024-11-21 14:30:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
比如网址

https://pay.jd.com/d/cashier-support/finishPage/?token=2861e6c218ce/af427e79d/395f1/09e3

类似这样的,我要匹配第3个/之前的所有的数据https://pay.jd.com/d/cashier-support,这样正则应该怎样写?


或者一段字符串   iQPNhHnDueAxHdXeEbrhEhtfd
我想要第2个出现H以前的所有字符串iQPNhHnDueAx  这样应该怎样写?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-21 14:42:20 | 显示全部楼层
要实现向后匹配直到第 N 个出现的字符,请使用如下的正则表达式:

1. 对于网址中的例子:
   - 你需要匹配网址中第 3 个 `/` 之前的所有数据,正则表达式可以这样写:
   
^([^/]+/){2}[^/]+
   - 解释:
     - `^` 表示匹配字符串的开始。
     - `([^/]+/)` 表示匹配非 `/` 字符的一个或多个加上一个 `/`,用括号括起来是为了分组。
     - `{2}` 代表这个分组重复两次,表示匹配前两个 `/`。
     - `[^/]+` 匹配第三个 `/` 之前的所有非 `/` 字符。

2. 对于字符串例子:
   - 要匹配第二个出现的 `H` 之前的所有字符串,正则表达式如下:
   
^[^H]*H[^H]*
   - 解释:
     - `^` 表示匹配字符串的开始。
     - `[^H]*` 匹配0个或多个非 `H` 的字符。
     - `H` 匹配第一个 `H`,为了找到第二个 `H` 的位置。
     - `[^H]*` 继续匹配直到第二个 `H` 为止,这样完整匹配就只会把两个 `H` 之间的内容算进去。

可以在支持正则表达式的环境中如Python、JavaScript中测试这些表达式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-22 09:49:38 | 显示全部楼层
FishC 发表于 2024-11-21 14:42
要实现向后匹配直到第 N 个出现的字符,请使用如下的正则表达式:

1. 对于网址中的例子:

第一个做法不对,用第二个方法来做第一个,改进一下可以

re.findall('^[^/]*/[^/]*/[^/]*/[^/]*/[^/]*',

但问题是这样如果我要第25个出现/这个的不就要复制20多次?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-22 15:00:55 | 显示全部楼层
https://^([^/]+/){2}[^/]+
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 01:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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