gpt4 book ai didi

Python:用于提取在括号之间找到的部分 URL 的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:28 25 4
gpt4 key购买 nike

我有这个格式奇怪的 URL。我必须提取“()”中的内容。

示例网址:http://sampleurl.com/(K(ThinkCode))/profile/view.aspx

如果我能从中提取ThinkCode,我将是一个快乐的人!我很难对“(”和“/”等特殊字符进行正则表达式处理。

最佳答案

>>> foo = re.compile( r"(?<=\(K\()[^\)]*" )
>>> foo.findall( r"http://sampleurl.com/(K(ThinkCode))/profile/view.aspx" )
['ThinkCode']

说明

在正则表达式世界中,lookbehind 是一种表示“我想匹配 ham 的方式,但如果它前面有 spam 。我们将其写为 (?<=spam)ham。所以在这种情况下,我们想要匹配 [^\)]* ,但前提是它前面有 \(K\(

现在 \(K\( 是一个很好的、简单的正则表达式,因为它是纯文本!这意味着,完全匹配字符串 (K( 。请注意,我们必须转义方括号(通过将 \ 放在它们前面),否则正则表达式解析器会认为它们是正则表达式的一部分而不是要匹配的字符!

最后,当你在 regex-world 中把一些东西放在方括号中时,它意味着“这里的任何字符都可以”。如果你把一些东西放在第一个字符是 ^ 的方括号内,这意味着“这里的任何字符 not 都可以”。所以 [^\)] 表示“任何不是右括号的字符”,而 [^\)]* 表示“尽可能多的不是右括号的字符”。

总而言之,(?<=\(K\()[^\)]* 意味着“尽可能多地匹配不是右括号的字符,前面是字符串 (K(

哦,最后一件事。因为 \ 意味着 Python 中的字符串 以及正则表达式内部的内容,所以我们使用原始字符串 -- r"spam" 而不仅仅是 "spam" 。这告诉 Python 忽略 \ 的。

另一种方式

如果后视对您来说有点复杂,您还可以使用捕获组。这些背后的想法是正则表达式匹配模式,但也可以记住子模式。这意味着您不必担心环视问题,因为您可以匹配整个模式,然后只提取其中的子模式!

要捕获一个组,只需将其放在括号内:(foo) 将捕获 foo 作为第一组。然后,用.groups()吐出你匹配到的所有组!这是其他答案的工作方式。

关于Python:用于提取在括号之间找到的部分 URL 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com