2016-12-07 6 views
2

私はエスケープ文字を置き換える正規表現を作成しようとしています。私のエスケープ文字はバックスラッシュ(\)です。たとえば:Regexはエスケープ文字を置き換えます

lastname[ct]sam\\\,ple 

が得られるはずです。

lastname[ct]sam\,ple 

まず私はこれでそれを試してみました:正しいグループ( "\\" と "\を、")マッチ

([\\]{1})(.?) 

。その後、私はちょうど肯定先読みでバックスラッシュを取得しようとしましたが、それは本当にうまくdidn't:

(?=([\\]{1}[^\\]{1}))(.?) 

それはちょうど、バックスラッシュの前にバックスラッシュをカンマの前にバックスラッシュにマッチしていません。私のミスがどこにあるのか?

+0

[$ '](https://regex101.com/r/7ho3ll/1)に置き換えるには' '\\(。)' 'を試しましたか?バックスラッシュをマッチさせ、後続のキャラクタをキャプチャし、キャプチャされたキャラクタのみで置き換えます。 –

+0

@ウィキメディア・コモンズ私はJavaで代用する方法がわかりません。やってみる! – perotom

+0

Java: 's.replaceAll(" \\\\(。) "、" $ 1 ")' –

答えて

1

マッチバックスラッシュとキャプチャ\\(.)正規表現とそれに続く文字、とだけ$1後方参照を使用して撮影した文字に置き換えます。

Javaでは、あなたは

String my_input = "\\\\\\,sample"; // => \\\,sample 
String result = my_input.replaceAll("\\\\(.)", "$1"); 
System.out.println(result); // => \,sample 

Java demoを参照してください使用することができます。

関連する問題