![删除长链(SMS)中的某些字符](https://linux22.com/image/1482918/%E5%88%A0%E9%99%A4%E9%95%BF%E9%93%BE%EF%BC%88SMS%EF%BC%89%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E5%AD%97%E7%AC%A6.png)
我有一个很长的 .xml SMS 文件,其中包含一些以下格式的消息:
<sms protocol="0" address=" (xxx) xxx-xxxx" date="1349121360000" type="2" subject="null" body="Body of the SMS is here" toa="null" sc_toa="null" service_center="null" read="1" status="-1" locked="0" date_sent="0" readable_date="Oct 1, 2012 3:56:00 PM" contact_name="(Unknown)" />
我想更换仅有的地址字段采用标准化格式
address=xxxxxxxxxx"
而不是address=" (xxx) xxx-xxxx"
如果没有这种格式,手机就无法正确串接消息。我尝试了很多正则表达式的组合,但都无济于事。
答案1
- 找什么:
\s\((\d\d\d)\)\s(\d\d\d)-(\d\d\d\d)
- 用。。。来代替:
\1\2\3
因此正则表达式正在寻找space
+ (
+ 数字+数字+数字 + )
+ space
+ 数字+数字+数字 + +-
数字+数字+数字+数字。
其它(非转义)括号在电话号码的区号、前缀和后缀部分周围创建三个捕获组。
“替换为”将用在 3 个捕获组中找到的内容替换 RegEx 搜索找到的内容。
前:
address=" (123) 456-7890"
后:
address="1234567890"