【发布时间】:2019-02-15 01:07:59
【问题描述】:
我正在使用此代码,但很难找到正确的模式。我可以通过更改 re.sub 来实现这一点,但如果可能的话,我想在不使用 re.sub 的情况下进行匹配。
var = "77777 11111 12891 22222 i"
-
来自
var我只想得到11111。喜欢我的代码:ppat = re.findall(r'(77777 (?:[\d]{1,6}))', var) -
来自
var我想在"i"之前得到22222,如下所示:opat = re.findall(r'((?:[\d]{1,6}) i)', var) 如何匹配这两种模式?例如,我将不同的输出放入将由模式匹配的变量?
一个。第一个可能的输出是:
output = "ndescr: XXXX"
b.我应该使用什么模式来匹配XXXX 和输出变量的实例看起来像这样,我只想获得No entries。我应该使用什么正则表达式模式?
output = "% No entries found for the selected source(s)"
谢谢
【问题讨论】:
-
您对捕获组和非捕获组的使用相当奇怪。出于某种原因,您总是将整个模式包装在一个不必要的捕获组中,而您将您感兴趣的部分包装在一个非捕获组中,就好像这会做一些有用的事情一样。
-
信息不足,无法得出实用的样本提取模式。仅根据原始问题中的内容,您可以使用
re.findall(r'(0{4,7}|2{4,7}|3{4,7}|4{4,7}|5{4,7}|6{4,7}|7{4,7}|8{4,7}|9{4,7})\s+(\d+)\s+\d+', var)[0][1] -
你的问题还不清楚。您是否要获取
77777后面的数字中的第二个数字?您是否试图将这些都纳入一个或两个变量中?
标签: python regex python-3.x python-2.7