Regex在URL中查找换行符后的文本

2024-05-14 05:42:15 发布

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

我想用正则表达式得到字符串的一部分。我想删除kerberos和它之后的所有内容,并获得Username

import re
text = 'Kerberos://DME.DMS.WORLD.DMSHEN/Username'
reg1 = re.compile(r"^((Kerberos?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$",text)
print(reg1)

输出Username

我是新的正则表达式和尝试这个正则表达式,但它似乎不工作


Tags: 字符串textimportre内容worldusernameftp
3条回答

您的正则表达式工作得很好,但我假设您希望使大多数组不被捕获(您可以通过向每个组添加?:来实现这一点)。你知道吗

它将为您提供以下信息:

re.match(r"^(?:(?:Kerberos?|ftp):\/)?\/?(?:[^:\/\s]+)(?:(\/\w+)*\/)(?P<u>[\w\-\.]+[^#?\s]+)(?:.*)?(?:#[\w\-]+)?$",t).group('u')

另外,为了将来的参考,请尝试使用https://regex101.com/,它有一种简单的方法来测试每个部分的regex+解释。你知道吗

这个简单的怎么样:

import re
text = 'Kerberos://DME.DMS.WORLD.DMSHEN/Username'
reg1 = re.findall(r"//.*/(.*)", text)
print(''.join(reg1))
# Username

如果需要,可以使用split而不是regex

text = 'Kerberos://DME.DMS.WORLD.DMSHEN/Username'
m = text.split('/')[-1]
print m

相关问题 更多 >