正则表达式:_.*|/(?=(.(?!/))*$)(.{1,3})$
时间: 2024-05-20 14:17:43 浏览: 12
这个正则表达式可以分成两个部分:
1. _.* 匹配以 _ 开头的任意字符(包括空格、符号等)直到字符串结束。
2. /(?=(.(?!/))*$)(.{1,3})$ 匹配以 / 结尾的任意字符,且这些字符中不包含 /,并且该字符后面的任意字符都是以 / 结尾的。
具体解释如下:
/ 匹配 / 字符。
(?=(.(?!/))*$) 正向前瞻,匹配任意字符,但该字符后面不能是 /,并且这些字符均以 / 结尾,直到字符串结束。
(.{1,3}) 匹配任意字符,重复 1 到 3 次,即匹配长度为 1、2 或 3 的字符。
$ 匹配字符串的结尾。
综上所述,该正则表达式可以用来匹配以 / 结尾的路径,且路径中不包含 / 的最后 1 到 3 个字符。例如,/abc、/defg、/hijkl 都符合匹配条件,但 /mno/pqr、/stu/vwx/yxz 都不符合条件。
相关问题
".*=.*?(?=,)" 更改一下表达式,使".*“匹配的长度遇到"="结束
要修改正则表达式使 `.*` 匹配长度遇到 `=` 结束,你可以使用 `[^=]*` 来匹配任意字符,直到遇到 `=`。
以下是修改后的正则表达式示例代码:
```cpp
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = "key1=value1,key2=value2,key3=value3,";
std::regex pattern("[^=]*=.*?(?=,)");
std::smatch match;
while (std::regex_search(input, match, pattern)) {
std::cout << match.str() << std::endl;
input = match.suffix().str();
}
return 0;
}
```
在上面的示例中,我们使用 `[^=]*=` 来匹配任意字符(除了等号),直到遇到等号为止。然后,我们继续使用 `.*?(?=,)` 来进行非贪婪匹配,并确保只捕获到逗号之前的最短字符串。
输出结果将是:
```
key1=value1
key2=value2
key3=value3
```
现在,正则表达式将根据你的要求匹配以逗号结尾的键值对,并且 `.*` 匹配的长度将在遇到等号时结束。
用正则表达式<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>爬取猫眼电影排行:爬取猫眼电影TOP100的所有信息。网址:https://www.maoyan.com/board/4
你可以使用以下代码使用正则表达式爬取猫眼电影TOP100的所有信息:
```python
import re
import requests
url = 'https://www.maoyan.com/board/4'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
response = requests.get(url, headers=headers)
html = response.text
pattern = re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>', re.S)
results = re.findall(pattern, html)
for result in results:
index = result[0]
image = result[1]
title = result[2]
actor = result[3].strip()[3:]
release_time = result[4].strip()[5:]
score = result[5] + result[6]
print(f'排名:{index}\n海报:{image}\n电影名:{title}\n主演:{actor}\n上映时间:{release_time}\n评分:{score}\n')
```
这段代码会发送一个GET请求到指定的URL,获取网页的HTML内容。然后使用正则表达式匹配对应的信息,并进行打印输出。注意在请求中需要添加User-Agent头部信息,以模拟浏览器访问。