使用正则怎样才可以向后匹配到第某个出现的字符串呢
比如网址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这样应该怎样写? 要实现向后匹配直到第 N 个出现的字符,请使用如下的正则表达式:
1. 对于网址中的例子:
- 你需要匹配网址中第 3 个 `/` 之前的所有数据,正则表达式可以这样写:
^([^/]+/){2}[^/]+
- 解释:
- `^` 表示匹配字符串的开始。
- `([^/]+/)` 表示匹配非 `/` 字符的一个或多个加上一个 `/`,用括号括起来是为了分组。
- `{2}` 代表这个分组重复两次,表示匹配前两个 `/`。
- `[^/]+` 匹配第三个 `/` 之前的所有非 `/` 字符。
2. 对于字符串例子:
- 要匹配第二个出现的 `H` 之前的所有字符串,正则表达式如下:
^[^H]*H[^H]*
- 解释:
- `^` 表示匹配字符串的开始。
- `[^H]*` 匹配0个或多个非 `H` 的字符。
- `H` 匹配第一个 `H`,为了找到第二个 `H` 的位置。
- `[^H]*` 继续匹配直到第二个 `H` 为止,这样完整匹配就只会把两个 `H` 之间的内容算进去。
可以在支持正则表达式的环境中如Python、JavaScript中测试这些表达式。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-11-21 14:42
要实现向后匹配直到第 N 个出现的字符,请使用如下的正则表达式:
1. 对于网址中的例子:
第一个做法不对,用第二个方法来做第一个,改进一下可以
re.findall('^[^/]*/[^/]*/[^/]*/[^/]*/[^/]*',
但问题是这样如果我要第25个出现/这个的不就要复制20多次? https://^([^/]+/){2}[^/]+
页:
[1]