2011-08-13 7 views
-2

英語の名前は、ハリー・ポッターの形式のようなものです。しかし、C++を使ってこの種のパターンを抽出するには?正規表現を使用してテキスト内のすべての名前を抽出する方法

+2

質問があまりにも広すぎます。あなたは何を試しましたか?何がうまくいかなかったのですか? –

+0

http://softwareramblings.com/2008/07/regular-expressions-in-c.html – arunkumar

+3

英語の名前はそうではありません。 –

答えて

1

まあ、非常に単純な正規表現は/\b([A-Z][a-z]+) ([A-Z][a-z]+)\b/です。

編集:これは、奇妙な大文字と迷子のアポストロフィを処理しません。

EDIT:^$を削除し、単語の境界を置きます。

+1

オッフォン、マッカートニー? :-) –

+0

Joanne K. Rowling? –

+0

@Bo、有効なポイント。私はそれなしで逃げることができると思った。したがって、 "非常にシンプル" :) –

0

あなたはこのようなものから始めることができます。

#include<regex> 
#include<iostream> 
int main() 
{ 
    // regular expression 
    const std::regex pattern("([A-Z][a-z]+)\s([A-Z][a-z]+)"); 

    // the source text 
    std::string text = "string containing names ..."; 

    const std::sregex_token_iterator end; 
    for (std::sregex_token_iterator i(text.cbegin(), text.cend(), pattern); 
     i != end; 
     ++i) 
    { 
     std::cout << *i << std::endl; 
    } 

    return 0; 
} 

learning regexが役立ちます。

関連する問題