我有很多长字符串 - 并非它们都具有相同的长度和内容,所以这就是为什么我不能使用索引 - 我想从所有字符串中提取字符串。这就是我想要提取的内容:
http://www.someDomainName.com/anyNumber
SomeDomainName
不包含任何数字,并且anyNumber
在每个长字符串中都有所不同。代码应该从任何可能的字符串中提取所需的字符串,并且应该考虑空格和可能出现在长字符串中的任何其他奇怪的东西 - 应该可以使用正则表达式吗? - 。有人可以帮帮我吗?谢谢。
更新:我应该说www。和.com总是一样的。还有一些域名!但是字符串中有另一个http://www.
答案 0 :(得分:1)
>>> 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
..是的 group 0
总是被捕获..这是匹配的完整字符串..
答案 1 :(得分:1)
import re
results = re.findall(r'\bhttp://www\.someDomainName\.com/\d+\b', long_string)
答案 2 :(得分:0)
是的,你最简单的赌注是正则表达式。这可能会完成工作:
import re
matcher = re.compile(r'www.(.+).com\/(.+)
matches = matcher.search(yourstring)
if matches:
str1,str2 = matches.groups()
答案 3 :(得分:0)
如果您确定SomeDomainName中没有任何点,您可以在第一次出现字符串“.com /”并从该索引中取出所有内容
这将避免使用难以维护的正则表达式
exp = 'http://www.aejlidjaelidjl.com/alieilael'
print exp[exp.find('.com/')+5:]