Regex使用Python Regex查找特定的数字

2024-10-03 09:14:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个regex来在Apache config中的RequestReadTimeout指令中查找maxtimeout值(以下为40)。文件,例如:

RequestReadTimeout header=XXX-40,MinRate=XXX body=XXX
RequestReadTimeout header=40 body=XXX

PS:XXX表示十进制数字

我用了这个:

str="RequestReadTimeout header=10-40,MinRate=10 body=10"
re.search(r'header=\d+[-\d+]*', str).group()
'header=10-40'

但我需要一个regex来只获取一行中的maxtimeout值(本例中为40)(而不使用其他函数,如spit(“-”[1]…等)。你知道吗

谢谢。你知道吗


Tags: 文件reconfigapache指令body数字regex
2条回答

你将要提取的部分分组:

re.search(r'header=(?:\d*-)?(\d+)', inputstr).group(1)

(...)标记一个组,像这样的位置组从1开始编号。你知道吗

我对您的表达式做了一点修改,只捕获包含数字和破折号的可选非捕获组之后的数字,以匹配您要查找的两种模式。(?:...)是一个非捕获组;它不在组中存储匹配的文本,但允许您使用组上的?量词将其标记为可选。你知道吗

Pythex demo。你知道吗

Python会话:

>>> import re
>>> for inputstr in ('RequestReadTimeout header=1234-40,MinRate=XXX body=XXX', 'RequestReadTimeout header=40 body=XXX'):
...     print re.search(r'header=(?:\d*-)?(\d+)', inputstr).group(1)
... 
40
40

您可以通过以下regex实现:

'RequestReadTimeout\sheader=(?:\d+)?-?(\d+).*'

第一个捕获的组\1就是您想要的

演示:http://regex101.com/r/cD6hY0

相关问题 更多 >