2016-05-31 4 views
-2

私は正規表現を使用して、テキストの間に見つけることが最初の行と最後の行の最初の3つのワードの最後の3つの言葉を取っていたテキストC#で大括弧の中のテキストを正規表現とマッチさせる方法は?

has helped discover and mentor such </br> 
New York Times bestselling authors as Brandon Sanderson </br> 
(Mistborn), James Dashner (The Maze Runner), and Stephenie 

を次のようしています。私はC#コードで次の正規表現を使用しています。 followigを有する

string matchedText = ""; 
string RegexPattren = preLine + "[\\w\\W\\S\\s\\s\\D':;\"<>,.?]*" + postLine; 
matchedText = Regex.Match(stBuilder.ToString(), RegexPattren).Value; 
matchedText = preLine.Equals("") ? matchedText : matchedText.Replace(preLine, ""); 
matchedText = postLine.Equals("") ? matchedText : matchedText.Replace(postLine, ""); 
string[] MatchedLines = Regex.Split(matchedText, "</br>").Where(x => !string.IsNullOrEmpty(x.Trim())).ToArray(); 



string RegexPattren = preLine + "[\\w\\W\\S\\s\\s\\D':;\"<>,.?]*" + postLine; 

は、正規表現は一致しないが、上記のコード

and mentor such [\w\W\S\s\s\D':;"<>,.?]* James Dashner 

が正常に動作していると一致した結果は、括弧付きの言葉は単に以下のように発見された場合

and mentor such </br>New York Times bestselling authors as Brandon Sanderson </br>(Mistborn), James Dashner 

問題が発生している値任意のテキスト。

and mentor such [\w\W\S\s\s\D':;"<>,.?]* (Mistborn), James Dashner 

C#で正規表現の前後に角かっこで囲まれた行をどのようにマッチさせるか?

答えて

1

あなたはそれが文字通り()と一致してあげる

and mentor such [\w\W\S\s':;"<>,.?]*\(Mistborn\), James Dashner 

のような括弧をエスケープする必要があります。

正規表現には、テキストに存在しない(Mistborn)の前にスペースがあることに注意してください。それは改行で始まります。スペースを削除しましたが、スペースと改行の両方に一致する\sに変更することもできます。

最後に\Dは数字が\wと一致しているため、すでに\Wで処理されている非数値と一致します。実際には、クラス内のいくつかの文字を削除することができました。あなたがRegexOptions.Singlelineを設定した場合、あなたはおそらく

and mentor such .*\(Mistborn\), James Dashner 

Check it out here at regex101でOKでしょう。

PS。 regex'esをエスケープする.NETメソッド、Regex.Escapeがありますが、実際に正規表現のパターンがであることを複雑にしています。

関連する問題