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

如何在Python中从长字符串中提取一些字符串?,python,string,Python,String,我有很多长字符串-不是所有的字符串都有相同的长度和内容,所以我不能使用索引-我想从所有的字符串中提取一个字符串。这就是我想提取的: http://www.someDomainName.com/anyNumber SomeDomainName不包含任何数字,anyNumber在每个长字符串中都是不同的。代码应该从任何可能的字符串中提取所需的字符串,并且应该考虑空格和可能出现在长字符串中的任何其他奇怪的东西-应该可以使用regex right?-。有人能帮我吗?多谢各位 更新:我应该说www.a

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

http://www.someDomainName.com/anyNumber 
SomeDomainName
不包含任何数字,
anyNumber
在每个长字符串中都是不同的。代码应该从任何可能的字符串中提取所需的字符串,并且应该考虑空格和可能出现在长字符串中的任何其他奇怪的东西-应该可以使用regex right?-。有人能帮我吗?多谢各位


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

是的,您最简单的赌注是regex。以下是一些可能完成工作的方法:

import re
matcher = re.compile(r'www.(.+).com\/(.+)
matches = matcher.search(yourstring)
if matches:
    str1,str2 = matches.groups()
在上述模式中,我们捕获了5个组-

  • 一个是匹配的完整字符串
  • 其余部分按您看到的括号顺序排列。。(因此,您正在寻找第二个…)
    (\\w*)
如果需要,您可以只捕获您感兴趣的
字符串的一部分。。因此,您可以从您不想要的模式的其余部分删除
括号
,只保留
(\w*)


在上面的示例中,您将不会有
组-2、3和4
,就像在前面的示例中一样,因为我们只捕获了
1组。。是的,始终捕获组0
。。这是匹配的完整字符串。

如果您确定某个域名中没有点,您只需获取字符串“.com/”的第一次出现,并获取该索引中的所有内容

import re
results = re.findall(r'\bhttp://www\.someDomainName\.com/\d+\b', long_string)
这将避免使用更难维护的正则表达式

exp = 'http://www.aejlidjaelidjl.com/alieilael'
print exp[exp.find('.com/')+5:]

“www.”和“.com”呢?幸运的是,它们总是一样的!就像“我不在乎他们”?不!我的意思是它们总是www.and.com。请看我的更新。这仍然不能回答我的问题。你确定这适用于每个字符串吗?因为这和我的情况不符。如何使用字符串而不是w*,因为我知道名称,不需要这样做。每次只有数字是可变的。您要输入什么字符串。。正如我向你展示的,与我的情况相符。。。变量号,任意域名…如果您有固定域名,则可以用您的域名替换
(\\w*)
。。它将与……相匹配。塞巴斯蒂安的回答解决了我的问题。谢谢你的解释和时间。谢谢。正是我想要的。
import re
results = re.findall(r'\bhttp://www\.someDomainName\.com/\d+\b', long_string)
exp = 'http://www.aejlidjaelidjl.com/alieilael'
print exp[exp.find('.com/')+5:]