"@\\d+=(.*?)(?=\\s/\\*|$)"这个正则不对,@4的值没有读出来
时间: 2023-08-11 07:08:11 浏览: 121
非常抱歉,我的错误。这是因为正则表达式中的 `(?=\\s/\\*|$)` 部分导致了匹配的终止条件,而在你提供的示例中,`@4` 后面的值并不满足这个条件。请改用以下正则表达式来提取值:
```java
Pattern pattern = Pattern.compile("@\\d+=(.*?)(?=(?:\\s/\\*|$|\\s@\\d+=))");
```
这个正则表达式使用了 `(?:\\s@\\d+=)` 来匹配下一个 `@` 开头的行,以此作为匹配终止条件。现在运行代码应该可以正确提取出 `@4` 后面的值了。感谢你的指正!
相关问题
Pattern pattern = Pattern.compile("@\\d+=(.*?)(?=(?:\\s/\\*|$|\\s@\\d+=))"); 这个正则不对,@4的值没有读出来
非常抱歉,我之前的回答有误。确实,使用 `(?:\\s/\\*|$|\\s@\\d+=)` 作为匹配终止条件会导致@4的值无法读取。请使用以下正则表达式:
```java
Pattern pattern = Pattern.compile("@\\d+=(.*?)(?=(?:\\s/\\*|$|(?<=@)\\d+=))");
```
这个正则表达式通过 `(?<=(?@)\\d+=)` 来匹配下一个 `@` 开头的行,以此作为匹配终止条件。现在,运行代码应该可以正确提取出 `@4` 后面的值了。再次感谢你的指正!
详细解释每一行import requests import re url='http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php' s= requests.Session() r=s.get(url) r.encoding='utf-8' print(r.text) num=re.findall(re.compile(r'<br/>\s+(.*?)='),r.text)[0] result=eval(num) r=s.post(url,data={'v': eval(num)}) print (r.text)
这段代码是一个 Python 脚本,它使用 requests 库来发送 HTTP 请求,并使用 re 库来处理 HTML 响应。首先,它创建了一个名为 url 的字符串变量,该变量包含要访问的网址。然后,它创建了一个名为 s 的 requests.Session 对象,该对象用于在多个请求之间共享 cookie。接下来,它使用 s.get() 方法发送一个 GET 请求,获取网页的 HTML 响应,并将响应的编码设置为 utf-8。然后,它使用 re.findall() 方法和正则表达式来从 HTML 响应中提取一个数字,该数字被赋值给名为 num 的变量。接着,它使用 eval() 函数来计算 num 的值,并将结果作为 POST 请求的数据发送到网站。最后,它打印出 POST 请求的响应。
阅读全文