如何从Python中的长字符串中提取一些字符串?

2024-10-01 09:26:51 发布

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

我有很多长字符串-不是所有字符串都有相同的长度和内容,所以我不能使用索引-我想从所有字符串中提取一个字符串。这就是我想提取的:

http://www.someDomainName.com/anyNumber 

SomeDomainName不包含任何数字,anyNumber在每个长字符串中是不同的。代码应该从任何可能的字符串中提取所需的字符串,并且应该考虑空格和可能出现在长字符串中的任何其他奇怪的东西-应该可以使用regex,对吗?-. 有人能帮我吗?非常感谢。你知道吗

更新:我应该说www.和.com总是一样的。还有域名!但是字符串中还有另一个http://www.


Tags: 字符串代码comhttp内容www数字regex
3条回答
import re
results = re.findall(r'\bhttp://www\.someDomainName\.com/\d+\b', long_string)

是啊,你最简单的赌注就是正则表达式。以下是一些可能完成任务的方法:

import re
matcher = re.compile(r'www.(.+).com\/(.+)
matches = matcher.search(yourstring)
if matches:
    str1,str2 = matches.groups()
>>> import re
>>> pattern = re.compile("(http://www\\.)(\\w*)(\\.com/)(\\d+)")
>>> matches = pattern.search("http://www.someDomainName.com/2134")
>>> if matches:
        print matches.group(0)
        print matches.group(1)
        print matches.group(2)
        print matches.group(3)
        print matches.group(4)

http://www.someDomainName.com/2134
http://www.
someDomainName
.com/
2134

在上述模式中,我们抓获了5组-

  • 一个是匹配的完整字符串
  • 其余的按括号顺序排列。。(因此,您正在寻找第二个…)(\\w*)

如果需要,可以只捕获感兴趣的string部分。。因此,您可以从您不想要的模式的其余部分移除brackets,并保留(\w*)

>>> pattern = re.compile("http://www\\.(\\w*)\\.com/\\d+")
>>> matches = patter.search("http://www.someDomainName.com/2134")
>>> if matches:
       print matches.group(1) 

someDomainName

在上面的示例中,您将没有groups - 2, 3 and 4,就像在前面的示例中一样,因为我们只捕获了1 group。。是的,总是被捕获。。这是匹配..的完整字符串。。你知道吗

相关问题 更多 >