(?<=<tr class="new">[\s\S]*?<td>)(\d+)(?=<\/td>) 这段正则 在jmeter里面怎么写
时间: 2024-06-04 14:09:15 浏览: 15
在JMeter中,您可以使用正则表达式提取器来实现这个正则表达式。以下是该提取器的设置:
- 变量名称:任何您喜欢的变量名称,例如"myVariable"
- 输入变量名称:将包含HTML响应的变量名称,例如"response"
- 表达式:`(?<=<tr class="new">[\s\S]*?<td>)(\d+)(?=<\/td>)`
- 模板:$1$
- 匹配号:1
这将从HTML响应中提取第一个匹配项,并将其存储在名为"myVariable"的变量中。您可以在后续的测试计划步骤中使用该变量。
相关问题
import retext = '''<tr>...</tr><tr class="new"><td>2023058</td> <td></td> <td>16</td> <td>31</td> <td>16</td> <td>15</td> <td>06</td> <td>15</td> <td>15</td> <td>05</td> <td>25</td> <td>15</td> <td></td></tr><tr>...</tr>'''pattern = re.compile(r'(?<=<tr class="new">)[\d\s]+(?=<\/tr>)')matches = pattern.findall(text)for match in matches: numbers = re.findall(r'\d+', match) print(numbers) 没有匹配到里面的数字
可能是因为你在正则表达式中没有考虑到空格。在HTML中,数字和空格之间可能有多个空格或其他空白字符。你可以使用\s+来匹配一个或多个空白字符。以下是修改后的代码:
```
import re
text = '''<tr>...</tr><tr class="new"><td>2023058</td> <td></td> <td>16</td> <td>31</td> <td>16</td> <td>15</td> <td>06</td> <td>15</td> <td>15</td> <td>05</td> <td>25</td> <td>15</td> <td></td></tr><tr>...</tr>'''
pattern = re.compile(r'(?<=<tr class="new">)\s*[\d\s]+\s*(?=<\/tr>)')
matches = pattern.findall(text)
for match in matches:
numbers = re.findall(r'\d+', match)
print(numbers)
```
这个正则表达式使用了\s*来匹配0个或多个空白字符。这样就可以正确地匹配数字和空格之间的任何空白字符。
<td>2023057</td> <td>02 05 10 17 24 32 + 03</td> <td class="t">√</td> <td>×</td> <td>×</td> <td>×</td> <td class="t">√</td> <td>×</td> <td class="t">√</td> <td>×</td> <td>×</td> <td>×</td> <td >3</td> </tr> <tr class="new"> <td>2023058</td> <td></td> <td>16</td> <td>31</td> <td>16</td> <td>15</td> <td>06</td> <td>15</td> <td>15</td> <td>05</td> <td>25</td> <td>15</td> <td></td> </tr> <tr> 在以上代码 用apache正则表达式提取以 <tr class="new">开头 </tr> <tr>结束 里面的数字
可以使用以下正则表达式来提取数字:
```
(?<=<tr class="new">)[\d\s]+(?=<\/tr>)
```
解释:
- `(?<=<tr class="new">)`: 前面必须是 `<tr class="new">`
- `[\d\s]+`: 匹配数字和空白字符,即数字之间的空格
- `(?=<\/tr>)`: 后面必须是 `</tr>`
完整代码如下:
```python
import re
text = '''
<tr>...</tr>
<tr class="new">
<td>2023058</td> <td></td> <td>16</td> <td>31</td> <td>16</td> <td>15</td> <td>06</td> <td>15</td> <td>15</td> <td>05</td> <td>25</td> <td>15</td> <td></td>
</tr>
<tr>...</tr>
'''
pattern = re.compile(r'(?<=<tr class="new">)[\d\s]+(?=<\/tr>)')
matches = pattern.findall(text)
for match in matches:
numbers = re.findall(r'\d+', match)
print(numbers)
```
输出:
```
['2023058', '16', '31', '16', '15', '06', '15', '15', '05', '25', '15']
```