正则表达式查找字符串中两个标记之间的位置

1 投票
5 回答
687 浏览
提问于 2025-04-16 11:56

我需要找到在

show_detail&

;session_id=1445045

之间的任何内容

在这个链接里:

https://www.site.gov.uk//search/cgi-bin/contract_search/contract_search.cgi?rm=show_detail&id=4035219;num=1;session_id=1445045;start=0;recs=20;subscription=1;value=0

我想用 Python 的正则表达式来实现。

我知道我需要用到前瞻和后顾,但我就是搞不定!

请帮帮我!

谢谢 :)

5 个回答

2

你可以在你的标记之间使用一种非贪婪匹配方式 (.*?)。

>>> import re
>>> url = "https://www.site.gov.uk//search/cgi-bin/contract_search/contract_search.cgi?rm=show_detail&id=4035219;num=1;session_id=1445045;start=0;recs=20;subscription=1;value=0"
>>> m = re.search("show_detail&(.*?);session_id=1445045", url)
>>> m.group(1)
'id=4035219;num=1'
5

为什么要使用正则表达式?

>>>> url = 'https://ww.site.gov.....'
>>> start = url.index('show_detail&') + len('show_detail&')
>>> end = url.index(';session_id=')
>>> url[start:end]
'id=4035219;num=1'
4

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这个过程就像是搬家,把东西从一个箱子搬到另一个箱子。

有些时候,数据的格式可能不太一样,就像是一个箱子是圆的,另一个是方的。这时候,我们需要想办法把这些数据转换成合适的格式,这样才能顺利搬运。

在编程里,我们会用一些工具和方法来帮助我们完成这些任务。比如,有些编程语言有内置的函数,可以直接帮我们处理这些数据,让整个过程变得简单。

总之,处理数据就像是整理和搬运东西,我们需要确保每样东西都放在合适的位置,这样才能让整个系统运行得更顺畅。

>>> s= "https://www.site.gov.uk//search/cgi-bin/contract_search/contract_search.cgi?rm=show_detail&id=4035219;num=1;session_id=1445045;start=0;recs=20;subscription=1;value=0"
>>> s.split(";session_id=1445045")[0].split("show_detail&")[-1]
'id=4035219;num=1'
>>>

撰写回答