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"
(联系人姓名(
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"