1

HtmlAgilityPack を使用して Web ページを解析しています。ドキュメントが読み込まれたら、可能な電話番号を HTML から抽出したいと考えています。現在、この目的のためにいくつかの正規表現を使用しています。Webページの電話番号の一致をチェックする次のコードがあります

    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);

HTMLアジリティパックからの抽象化はどこにdociありますか。問題は、や などHtmlDocumentの一部の電話番号と一致しないことです。08450 211 211+44 (0) 1246 733 000

Web サイトをクロールするときに最適で、ほとんどの形式の国際電話番号を照合できる一般的な正規表現はありますか?

4

1 に答える 1

1

正規表現が単にそれらと一致しないため、これらの電話番号(08450 211 211および)を一致させることはできません。+44 (0) 1246 733 000

正規表現を作成するときに最初に行う必要があるのは、一致させたいパターンを特定することです

だから、私の提案は、さまざまな電話番号の形式のリストを書き留めて、質問を更新することです。そうすれば、私たちはあなたを助けることができます。それ以外の場合は、正規表現が一致しない可能性のある新しい電話番号を常に作成します。そうでない場合は、必要以上に一致します。

上記の電話番号に一致する正規表現は次のとおりです。

(?:\+\d+\s+\(\d+\)\s+)?\d{4,5}\s+\d{3}\s+\d{3}

編集:

あなたのコメントによると、私はこの正規表現を使用してから、電話番号ではないものを削除します。

(?:\+\d+\s+\(\d+\)\s+)?[\d -]+
于 2013-03-01T20:10:38.100 に答える