create regex从字符串中提取电话号码

本文关键字:提取 电话号码 字符串 regex create | 更新日期: 2023-09-27 18:01:04

我有一个以下格式的字符串,其中包含索引号、电话号码、组号和联系人姓名。你能创建一些正则表达式来从下面的字符串中提取所有内容吗?

"AT+CPBR=1'r'r'n+CPBR: 1, "0342123456", 129, "simnumber"'r'n'r'nOK'r'n"  

细分:

"AT+CPBR=1'r'r'n+CPBR: 1(索引号(

, "0342123456"(电话号码(

, 129(组号(

, "simnumber"(联系人姓名(

create regex从字符串中提取电话号码

Regex转义符因语言而异。假设中间的7位数字是电话号码,试试这个。

''"('d+)''"

这将返回

0342123456

在捕获组中。

更新

在重读你的问题时,我猜转义序列是在你的输入字符串中转义的,所以你的真实输入是(为了简单起见,''r''n保留在原地(。

AT+CPBR=1'r'r'n+CPBR: 1, "0342123456", 129, "simnumber"'r'n'r'nOK'r'n

使用C#,您可以使用以下

string s = "AT+CPBR=1'r'r'n+CPBR: 1, '"0342123456'", 129, '"simnumber'"'r'n'r'nOK'r'n";
Regex rx = new Regex(@": ('d), ""('d+)"", ('d+), ""('w+)""");
Match m = rx.Match(s);
Console.WriteLine(m.Groups[0]);
Console.WriteLine(m.Groups[1]);
Console.WriteLine(m.Groups[2]);
Console.WriteLine(m.Groups[3]);
Console.WriteLine(m.Groups[4]);

这将导致

1
0342123456
129
simnumber

请记住,Groups[0]包含包括引号在内的整个匹配项。

请问您为什么要使用regex来提取上面字符串中的phone#。为什么不在使用空格字符的文本上使用split()explode()函数的变体,并从生成的字符串数组中获取元素#2(第三个元素(。在php中,您可以这样做:

$arr = (explode(' ', '"AT+CPBR=1'r'r'n+CPBR: 1, '"0342123456'", 129, '"simnumber'"'r'n'r'nOK'r'n"'));
$phoneNo = trim($arr[2], ''",');
var_dump($phoneNo);

输出

string(10) "0342123456"