这是两个文本:
1) 'provider:sipoutilp1.ym.ms'
2) 'provider:sipoutqtm.ym.ms'
我想在到达第一行时打印ilp
,到达第二行时打印qtm
。你知道吗
这是我的解决方案,但不起作用。你知道吗
RE_PROVIDER = re.compile(r'(?P<provider>\((ilp+|qtm+)')
或者在下面的行中
182938,DOMINICAN REPUBLIC-MOBILE
对于DOMINICAN REPUBLIC
,我可以使用相同的方法re.compile
?你知道吗
谢谢你的帮助。你知道吗
正则表达式不正确,因为关键字前面有一个开括号,因为行中没有这样的字符。你知道吗
作为一种更通用的方法,您可以捕获
sipout
或provider:sipout
之后的字母字符。你知道吗(?<=sipout)
是一个positive look-behind,它将使正则表达式引擎与sipout
前面的模式匹配。你知道吗编辑后:
如果要匹配多个具有不同结构的字符串,则必须使用可选的前置模式来匹配关键字,并且由于不能在look behind中使用长度不固定的模式,因此不能将其用于此目的。因此,你可以使用一个捕获组技巧。你知道吗
您可以在none捕获组中定义可选的前面模式,在捕获组中定义关键字,然后在match之后获得第二个匹配的gorup(
group(1)
,group(0)
是整个匹配)。你知道吗注意在这种情况下
gorupdict
不起作用,因为它将返回相关问题 更多 >
编程相关推荐