2

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

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

sip:58392#7638500@10.10.10.10

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

4

4 回答 4

8

试试这个表达,

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

参见Lookahead 和 Lookbehind 零宽度断言

于 2012-12-18T02:08:48.057 回答
0

在 Python 2.7.3 中:

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

...有用。

我不明白/\1/你的正则表达式末尾是什么 - 可能是你正在使用的正则表达式的特定风格,但我怀疑这就是问题所在。

于 2012-12-18T02:09:29.570 回答
0

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

sip:.*?\#
于 2012-12-18T02:13:54.023 回答
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];
于 2012-12-18T02:14:10.687 回答