我想使用正则表达式从xml中提取电话号码。
....
<address>phone number</address>
....
ex)<address>1234567890</address>
但有时候这个电话号码的前缀是一些不必要的字符。
ex) <address>tel+1234567890</address>
我只需要电话号码。
我使用了<address>.+?(\d+)</address>
但这不能正常运作。
如果有前缀词,我怎么能总是得到号码?
答案 0 :(得分:2)
您可以使用linq:
string number = "tel+12345678";
string filtered = new String(number.Where(x => Char.IsDigit(x)).ToArray());
答案 1 :(得分:0)
基本上,你的正则表达式不起作用,因为你没有.+?
可选。
您可以像.*?
一样修复它,或者执行以下操作:
正则表达式:
@"<address>[^>\d]*(\d+)[^>]*</address>"
格式化:
<address> [^>\d]*
( \d+ ) # (1)
[^>]* </address>
输出:
** Grp 0 - ( pos 51 , len 29 )
<address>1234567890</address>
** Grp 1 - ( pos 60 , len 10 )
1234567890
---------------
** Grp 0 - ( pos 169 , len 33 )
<address>tel+1234567890</address>
** Grp 1 - ( pos 182 , len 10 )
1234567890