HtmlAgilityPack을 사용하여 웹 페이지를 구문 분석하고 있습니다. 일단 문서가로드되면 HTML에서 가능한 전화 번호를 추출합니다. 현재,이 목적을 위해 일부 정규식을 사용하고 있습니다. 다음 코드는 웹 페이지에서 전화 번호가 일치하는지 확인합니다.
private static string phoneReg =
@"[\+]{0,1}(\d{10,13}|[\(][\+]{0,1}\d{2,}[\13)]*\d{5,13}|\d{2,6}[\-]{1}\d{2,13}[\-]*\d{3,13})";
private static Regex phoneRegex = new Regex(phoneReg, RegexOptions.IgnoreCase);
var phoneMatches = phoneRegex.Matches(doci.DocumentNode.InnerText);
여기서 doci
는 html 민첩성 팩의 HtmlDocument
추상화입니다. 문제는 08450 211 211
및 +44 (0) 1246 733 000
과 같은 일부 전화 번호와 일치하지 않는 것입니다.
웹 사이트를 크롤링 할 때 가장 적합한 일반 정규식이 있으며 대부분의 국제 전화 번호가 일치 할 수 있습니까?
정규식이 단순히 일치하지 않으므로 해당 전화 번호 ( 08450 211 211
및 +44 (0) 1246 733 000
)와 일치시킬 수 없습니다.
정규식을 작성할 때 가장 먼저해야 할 일은 일치시키고 자하는 패턴을 식별하는 것입니다 .
그래서, 제 제안은 다른 전화 번호 형식 목록 을 작성하고 질문을 업데이트 한 다음 우리가 당신을 도울 수있게하는 것입니다. 그렇지 않으면 정규 표현식이 일치하지 않는 새 전화 번호를 만들거나 원하는 Whan 이상 일치시킬 수 있습니다.
위의 전화 번호와 일치하는 정규식은 다음과 같습니다.
(?:\+\d+\s+\(\d+\)\s+)?\d{4,5}\s+\d{3}\s+\d{3}
편집하다:
귀하의 의견에 따르면, 난 그냥이 정규식을 사용하고 전화 번호가 아닌 것을 제거 :
(?:\+\d+\s+\(\d+\)\s+)?[\d -]+