我想使用正则表达式来获取字符串的一部分。我想删除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的新手并试用了这个正则表达式,但它似乎无法正常工作
答案 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