正则表达式提取字符串的中间部分

时间:2012-12-18 02:03:22

标签: regex

从这个例子中提取58392的正则表达式是什么。

冒号和散列之间的数字是可变长度

sip:58392#7638500@10.10.10.10

我尝试了这样的结合但没有运气sip:(.*?)#/\1/

4 个答案:

答案 0 :(得分:5)

试试这个表达式,

(?<=:).*?(?=#)

请参阅Lookahead and Lookbehind Zero-Width Assertions

答案 1 :(得分:0)

在Python 2.7.3中:

>>> import re
>>> r = r"sip:(.*?)#"
>>> s = "sip:58392#7638500@10.10.10.10"
>>> re.findall(r,s)
['58392']

......它有效。

我没有得到你的正则表达式末尾的/\1/的内容 - 可能是你正在使用的正则表达式的特定风格,但我怀疑这是问题所在。

答案 2 :(得分:0)

以下内容将匹配 sip:58392#,然后通过任何拆分字符串方法,我认为您可以删除sip:和#。

sip:.*?\#

答案 3 :(得分:0)

这是一个PHP示例:

<?php

$string = 'sip:58392#7638500@10.10.10.10';
$pattern = '/^sip:([0-9]+)#/';
preg_match($pattern, $string, $matches);
echo "the number is : ", $matches[1];