如何在没有开始单词和结束单词的情况下获得正则表达式的字符串?

时间:2013-12-09 23:07:35

标签: string expression between

如何在正则表达式的字符串之间进行操作?结果字符串不应包含起始单词和结束单词?我搜索谷歌,没有答案。

原始字符串: http://xxx.168.x.xxx/delete/568b96fb75b2

预期字符串:

xxx.168.x.xxx


我的正则表达式是:

  1. //[\s\S]*(?=/d) result: //xxx.168.x.xxx
  2. /[\s\S]*(?=/d) result: //xxx.168.x.xxx
  3. 有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:0)

如果您始终希望从此表单中的网址中提取IP地址,则可以使用以下内容:

[^/]*(?=/delete)

它的优点是它不依赖于lookbehind或捕获组。

答案 1 :(得分:0)

试试这个://(.*?\.168\..*?\..*?)/

以Python为例:

>>> p=re.compile('//(.*?\.168\..*?\..*?)/')
>>> s='http://xxx.168.x.xxx/delete/568b96fb75b2'
>>> p.findall(s)
['xxx.168.x.xxx']
>>> p2=re.compile('//[\s\S]*(?=/d)')
>>> p2.findall(s)
['//xxx.168.x.xxx']
>>> p3=re.compile('[^/]*(?=/delete)')
>>> p3.findall(s)
['xxx.168.x.xxx', '']

由于您可能正在检测IP地址,因此可能会更好://([0-9]*?\.168\.[0-9]*?\.[0-9]*?)/ 在Python中:

>>> s1='http://192.168.1.1/delete/fjdsafdasfdsa'
>>> p4=re.compile('//([0-9]*?\.168\.[0-9]*?\.[0-9]*?)/')
>>> p4.findall(s1)
['192.168.1.1']