我正在解析一个包含各种个人信息的文件,并且只有存在的信息存在于文件中,即使有更多的潜在字段。例如:
[其他东西] 家庭电话: [家庭电话] 移动电话: [MOBILE_PHONE]
因此,手机部分可能看起来像以下四个示例中的任何一个:
Home Phone:
(111) 222-3333
Mobile Phone:
(111) 222-3334
或
Home Phone:
(111) 222-3333
或
Mobile Phone:
(111) 222-3334
或
[nothing]
我正在尝试使用以下正则表达式代码段来匹配家庭电话,但它根本不匹配。
(Home\sPhone.\r\n(?<hphone>\(\d\d\d\)\s\d\d\d-\d\d\d\d))?
(我知道有很多需要改进的地方,但我对这些并不是很好,所以我只是想在开始优化之前通过暴力破解它。因此,在电话号码匹配模式中重复。)
任何想法如何使我的工作?
谢谢!
答案 0 :(得分:0)
我猜你正在使用的系统会终止\r
或\n
行,但不能同时终止。
删除\n
上的{{1}}
答案 1 :(得分:0)
由于某一行的结尾通常会因系统/程序而异,因此您可以使用类似[\r\n]+
的内容来覆盖一些额外的基础 - \n
或\r
出现一次或多次。
所以你的表达会变成:
(Home\sPhone.[\r\n]+(?<hphone>\(\d\d\d\)\s\d\d\d-\d\d\d\d))?
然后你可以开始更多地压缩表达式,例如:
(Home\sPhone.[\r\n]+(?<hphone>\(\d{3}\)\s\d{3}-\d{4}))?