正则表达式在URL中的换行符后查找文本

时间:2018-04-06 13:21:52

标签: python regex

我想使用正则表达式来获取字符串的一部分。我想删除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

我是regex的新手并试用了这个正则表达式,但它似乎无法正常工作

3 个答案:

答案 0 :(得分:1)

你的正则表达式工作得很好,但我假设你想让大多数组不捕获(你可以通过向每个组添加?:来实现这一点。

它将为您提供以下内容:

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

此外,为了将来参考,请尝试使用https://regex101.com/,它可以轻松地测试每个部分的正则表达式+解释。

答案 1 :(得分:0)

这个简单的怎么样:

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

答案 2 :(得分:0)

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

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