2016-03-26 8 views
1

を取ってから、正規表現を制限しません\] |。\\)* \ "mynameisalexand"は、どのように私はから始まり「で終わる」などの文字列の正規表現正規表現を作成している特定の単語

今、私は、この式は、{、、彼ら、そして私たちを、私たちを}言葉を取ることはいけないことをしたい 私はそれをどのように行うのです。例えば I入力の場合。?」 " コンパイラは{と}を無視して、この文字列を" mynameisalex "とする必要があります

+0

、入力が ' "mynamesarealexandandrew"'ですか? '' mynamesarealexrew ''であるべきですか? –

+0

うん!例として使用されています。私が制限する言葉もあります。私はアイデアが必要です! – Ali

+0

キャプチャした文字列で通常の文字列操作メソッドを使用できませんか? –

答えて

1

正規表現と非連続テキストを一致させる方法はありませんので、あなたはまだあなたの正規表現やアンロール1を使用することができます。

"[^"\\]*(?:\\.[^"\\]*)*" 

regex demo

を参照してください、あなたがで定義された部分文字列を削除String.Replace(またはwe|and|...のような正規表現を使用して)。

C# demoを参照してください:

var input = "\"mynamesarealexandandrew\" \"mynameisalexand\""; 
var regex = new Regex(@"""[^""\\]*(?:\\.[^""\\]*)*""", RegexOptions.IgnorePatternWhitespace); 
var results = regex.Matches(input).Cast<Match>() 
        .Select(p => p.Value.Replace("we", "") 
             .Replace("us", "") 
             .Replace("they", "") 
             .Replace("and", "")) 
        .ToList(); 
foreach (var s in results) // DEMO 
{ 
    Console.WriteLine(s); 
} 
0

後で文字列を消去する必要があります十分に強力ではありません。

実際には、文脈自由文法があります。あなたが受け入れ可能なトークンを 'id'と呼ぶと、このような言語が定義されています。

id (('and'|'we'|'us') id?)* 

つまり、少なくとも1つのid。 andwe、またはusという単語がある場合は、おそらく別のIDです。

だから、これは知られていますarebothcalledsarah: をmynameis 'と' ID:全体のことは、あなたが

mynameisandrewbutheyarebothcalledsarah

としてIDと一致することができ、繰り返し、 '彼らは' IDを をrewbut文脈自由な言語として、正規表現はそのようなことを解析することはできません。あなたの最善の策は、受け入れがたい言葉に分割し、最後にそれらを一緒にステッチすることです。

関連する問題