为了账号安全,请及时绑定邮箱和手机立即绑定

Python 构建正则表达式模式?

Python 构建正则表达式模式?

森栏 2021-11-09 16:29:02
我正在处理这段代码,但很难找到正确的模式。我可以通过改变做来实现这一点,re.sub但re.sub如果可能的话,我想在不使用的情况下进行匹配。var = "77777 11111 12891 22222 i"从var我只想得到11111. 就像我的代码:ppat = re.findall(r'(77777 (?:[\d]{1,6}))', var)从var我想得到这样的22222之前"i":opat = re.findall(r'((?:[\d]{1,6}) i)', var)我如何匹配这两种模式?例如,我将不同的输出放到与模式匹配的变量中?一种。第一个可能的输出是:output = "ndescr:  XXXX"湾 我应该使用什么模式来匹配XXXX输出变量出现的实例,并且我只想获得No entries。我应该使用什么正则表达式模式?output = "%  No entries found for the selected source(s)"谢谢
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

虽然不完全清楚您要匹配什么,但我正在试一试。


如果您只是想获取第二个和最后一个元素,那么这可以在没有正则表达式的情况下完成。


var = "77777 11111 12891 22222 I"


elements = var.split(" ") # Take the string, and split it into a list on spaces.


first_number = elements[1] # Get the second element ("11111").


second_number = elements[-2] # Get the second element from the end ("22222").

或者,如果您真的想使用正则表达式或正在寻找77777像这样的正则表达式后的数字:


import re

var = "77777 11111 12891 22222 I"


# Finds the 5 numbers that follows a "7" repeated 5 times (with a space in between).

first_number = re.search("(?<=7{5}\s)\\d{5}", var).group()


# Find the 5 numbers that precedes an "I" (with a space in between).

second_number = re.search("\\d{5}(?=\sI)", var).group()


查看完整回答
反对 回复 2021-11-09
?
倚天杖

TA贡献1828条经验 获得超3个赞

re.findall("(?<=77777)\\s+(?:\\d{1,6})",var)

re.findall("(?:\\d{1,6})\\s+(?=i)",aa)

您可以阅读 python re 模块了解详细信息。 


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信