2011-07-24 10 views
0

以下はsentanceの場合はsentancedesiredResultです。以下のpatternを使用してt Tを変更してt, tに変更する必要がありますが、どこに行くのかわかりません。javascriptの正規表現による正しい文構造

var sentence = "Over the candidate behaves the patent Then the doctor."; 
var desiredResult = "Over the candidate behaves the patent, then the doctor."; 
var pattern = /[a-z]\s[A-Z]/g; 

は私が前の文字が小文字の「I」場合以外の資本の前にコンマとスペースを追加することによって、正しい文にしたいです。 、

+0

構造を検出するためにどのようなヒューリスティックが使用されているのかは本当にはっきりしません。そうでなければこのようなものを使うことができます。 '^。*?(patent \ sT)。* ' – Olipro

+0

投稿を更新しました。 – ThomasReggi

答えて

3

あなたの文章の使用.replace()と2番目のパラメータとしてIを大文字に保存するよう

var corrected = sentence.replace(
    /([a-z])\s([A-Z])/g, 
    function(m,s1,s2){ //arguments: whole match (t T), subgroup1 (t), subgroup2 (T) 
     return s1+', '+s2.toLowerCase(); 
    } 
); 

を交換する関数を渡す多くの方法、そのうちの一つがあります。

var corrected = sentence.replace(
    /([a-z])\s([A-Z])(.)/g, 
    function(m,s1,s2,s3){ 
     return s1+((s2=='I' && /[^a-z]/i.test(s3))?(' '+s2):(', '+s2.toLowerCase()))+s3; 
    } 
); 

は、しかし、多くの場合がありますそれが失敗すると、His name is Joe.,WTF is an acronym for What a Terrible Failure.など多数。

+0

私はもう一つの規定を追加しました。 "私"、私は "私"だけを残すことはできませんでした。何か案は? – ThomasReggi

+0

私の編集の回答を参照してください。 –