用Python编写正则表达式以匹配子字符串

2024-07-08 12:02:25 发布

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

我正在进行一个Python项目,以查找指定的字符串,例如:

< url: 'something', uid: 'something', type: 'something' >

我需要得到一些值。 示例:

String value = "url: 'abs52fs', uid: '1fg23s4', type: 'fgh54e'"
re.search("url: '(.*)', uid: '(.*)', type: '(.*)'", value)

OUTPUT: >> [abs52fs, 1fg23s4, fgh54e]

我想写一个正则表达式,但它返回一个NoneType对象。 你能帮助我吗? 敬礼


Tags: 项目字符串reurl示例outputsearchuid
2条回答

如果您不介意3个单独的电话:

>>> import re
>>> value = "url: 'abs52fs', uid: '1fg23s4', type: 'fgh54e'"
>>> url = re.search(r"url:\s'(.*?)'", value)
>>> url.group(1)
'abs52fs'
>>> uid = re.search(r"uid:\s'(.*?)'", value)
>>> uid.group(1)
'1fg23s4'
>>> type = re.search(r"type:\s'(.*?)'", value)
>>> type.group(1)
'fgh54e'

如果您知道您的数据将始终遵循模式url,后跟uid,后跟type,则可以执行以下操作:

>>> tokens = re.search(r"url:\s'(.*?)',\suid:\s'(.*?)',\stype:\s'(.*?)'", value)
>>> url, uid, type = tokens.groups()
>>> url
'abs52fs'
>>> uid
'1fg23s4'
>>> type
'fgh54e'

您的正则表达式可以工作,但它有一个问题。它将错误地接受如下字符串:

url: 'abs52fs', url: 'abs52fs', uid: '1fg23s4', type: 'fgh54e'

(见https://regex101.com/r/sK0vN1/1

尝试以下操作(https://regex101.com/r/xN7zR0/1):

url: '([^']*)', uid: '([^']*)', type: '([^']*)'

相关问题 更多 >

    热门问题