2011-07-20 4 views
0

は、私は、文字列「これは少年とととと女の子またはbiscutとペンである」を持っている私は、単一のandによって、これらすべてのand Sを交換したいと思います。 Regexを使ってこれを行うことはできますか?regexを使用して文中で隣接して「と」を繰り返し検索していますか?

私は、この正規表現を使用していたが、それは失敗します。@"(\band\s+){2,}"(ただし未テスト):多分このような

@"\b(?<word>\w+)\s+(\k<word>)\b" 
+0

あなたの正規表現は、同じ単語(任意の単語)の正確に2つの出現を置き換えるのに正しいです。しかし '\ k 'の括弧は不要です。 –

答えて

1
Regex.Replace(text, @"(\band\s+)+", "and "); 
1

何かを。とにかく検索/置換しているので、@"(\band\s+)+"

3

(あなたのポストで正規表現が示唆するように)あなたは、一般的に繰り返される単語を意味している場合:

resultString = Regex.Replace(subjectString, @"\b(\w+)(?:\s+\1)+\b", "$1"); 

説明:それは唯一のandなら

\b # Assert start at a word boundary 
(\w+) # Match a word 
(?: # Try to match... 
\s+ # Whitespace and 
\1 # the same word as before 
)+ # one or more times 
\b # Assert end at a word boundary 

を置き換えたい:

resultString = Regex.Replace(subjectString, @"\b(?:and\s+){2,}", "and "); 
+0

一般的ではありません。RegExを壊すために「and」のみをチェックしてください。 –

+1

+1。彼らと多くの経験を持っていない人々に役立ちます。 – Tim

関連する問題