2017-06-15 6 views
-1

以下のRegexを使用してLDAPパスから名前を抽出していますが、名前にバックスラッシュ(コンマのためにエスケープ文字)が残っています。言語はC#です。LDAPパス(C#)からバックスラッシュエスケープ文字を削除します。

使用:

^CN=(.+?),(?:CN|OU|DC|)=.* 

に対して:

CN=John\, Smith,OU=Example,DC=Internal,DC=Net 

葉:

John\, Smith 

どのように私はまた、ジョン・スミスを残す名にバックスラッシュを削除することができますか?私は何時間も成功しなかった。どのような助け本当に感謝します。

おかげ スティーブン

+0

プログラミング言語とは何ですか? '' \ ''を単に空の文字列に置き換えるだけで、マッチ値を後処理する必要があります。 –

+0

この '(。+?)'はすべてのものにマッチして\同様に、 '。\?'の代わりに '(\ w +)\\、\ s +(\ w +)、' –

答えて

0

あなたは次の操作を行うことができますが、次の2つのキャプチャグループを持つことになります。

CN=(\w+)\\?,\s(\w+),(?:CN|OU|DC|)=.* 
Group 1 = John 
Group 2 = Smith 

しかし、正規表現を容易にするためにあなたがしてエスケープを置き換えたとして、私はすべてに一致することをお勧めいたします後で文字。それは簡単な方法です。

+0

入力に複数の '\、 'があるとうまく動作しません。 –

+1

@WiktorStribiżewどのように複数の "\"があるかもしれないことを知っていますか?それは質問に明白ではない。 – hurturk

関連する問題