正则表达式替换转义字符

标签 regex regex-lookarounds

我正在尝试构建一个正则表达式来替换我的转义字符。我的转义字符是反斜杠 (\)。例如:

lastname[ct]sam\\\,ple

应该得到:

lastname[ct]sam\,ple

首先我尝试了这个:

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

匹配正确的组(“\\”和“\,”)。然后我尝试用正向的前瞻来获取反斜杠,但它并没有真正起作用:

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

它只匹配逗号之前的反斜杠,而不是反斜杠之前的反斜杠。有人知道我的错误在哪里吗?

最佳答案

匹配反斜杠并捕获后续字符 \\(.)正则表达式,并仅使用 $1 反向引用替换为捕获的字符。

在Java中,你可以使用

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

参见Java demo .

关于正则表达式替换转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41016482/

相关文章:

javascript - 正则表达式匹配字符的所有实例,除非后跟数字或单独存在

regex - 捕获匹配组的子字符串

Java RegEx 前瞻失败

java - 如何使用正则表达式查找带有某些前缀的可选组

php - 使用正则表达式解析 SQL,排除带引号的文字

javascript - RegEx:将 Android 设备名称与 JavaScript 匹配

regex - 从c文件中提取标题名称的正则表达式

r - 匹配模式,只要它不包含特定字符串

javascript - 在向前看之前只捕获最接近的匹配项

java - 捕获未跟随某些数字的数字流