2013-11-03 2 views
1

C# 및 Regex를 사용하여 RichTextBox에서 음성 인식을 시도하므로 사용자가 "Find Speech"를 클릭하면 의 모든 음성 표시와 안에있는 음성이 강조 표시됩니다. 푸른. 그러나, 나는 현재 내가 할 수있는 모든 것이 말의 표식을 강조하는 것처럼 내부 연설을 찾는 것을 Regex와 결합하는 방법에 대해 너무 확신하지 못한다.C# 음성 표시 내에서 음성 가져 오기

public void FindSpeech() 
{ 

    Regex SpeechMatch = new Regex("\""); 

    TXT.SelectAll(); 
    TXT.SelectionColor = System.Drawing.Color.Black; 
    TXT.Select(TXT.Text.Length, 1); 
    int Pos = TXT.SelectionStart; 

    foreach (Match Match in SpeechMatch.Matches(TXT.Text)) 
    { 
      TXT.Select(Match.Index, Match.Length); 
      TXT.SelectionColor = System.Drawing.Color.Blue; 
      TXT.SelectionStart = Pos; 
      TXT.SelectionColor = System.Drawing.Color.Black; 
    } 
} 
+2

당신이 우리 입력 텍스트 보여줄 수 주된 관심은 따옴표 안에 탈출 따옴표를 일치시킬 수 있다는 것입니다? 정확히 무엇을 검색/일치 시키려고합니까? –

+0

예제 문자열은 매우 유용합니다. –

답변

1

이 시도 :

Regex SpeechMatch = new Regex("\".+?\""); 
1

이 패턴을 사용할 수 있습니다.

Regex SpeechMatch = new Regex(@"\"(?>[^\\\"]+|\\{2}|\\(?s).)+\""); 

패턴 세부 사항 :

\"    # literal quote 
(?>   # open an atomic(non-capturing) group 
    [^\\\"]+ # all characters except \ and " 
    |   # OR 
    \\{2}  # even number of \ (that escapes nothing) 
    |   # OR 
    \\(?s). # an escaped character 
)+    # close the group, repeat one or more times (you can replace + by * if you want) 
\"    # literal quote 
+0

작동하지 않았습니다. 컴파일러 오류가 여러 개 있습니다. 문자열 영역의 대부분은 밑줄이 그어져 있습니다. 어떻게해야합니까? – Joe

+0

@Joe : 아이디어는이 패턴이지만, 큰 따옴표와 백 슬래시를 벗어나는 횟수를 확신 할 수 없습니다. –

+0

@CasimiretHippolyte @를 제거하십시오. 그것을 사용할 때 백 슬래시를 벗어날 필요는 없지만 큰 따옴표를 두 배로 늘려야합니다. – Jerry