regex - 如何使用正则表达式对反斜杠和 ''进行转义和不转义?

标签 regex flutter dart

我需要'''中的所有backslashesstring逸出。因此,如果用户输入\,则应将其转换为\\;如果用户输入''',则应将其转换为\'''

输入示例:

This is a test \. ABCDE ''' DEFG

示例输出:
This is a test \\. ABCDE \''' DEFG

我还需要 unescape backslashes'''

示例输入:
asdf \\\\ and \'''

示例输出:
asdf \\ and '''            

我尝试了类似的方法,但是它不起作用。
 input = input.replaceAll(new RegExp(r'\\'), '\\\\')

编辑:
从注释中尝试建议的解决方案后,转义有效,但无法转义。
  String unescape(String input) {
    return input.replaceAll(r"\'''", r"'''").replaceAll(r"\\", r"\");
  }

测试
  test("Unescape", () {
      String test = r" \\ TESTTEST ";
      String expected = r" \ TESTTEST ";
      expect(stringUtils.unescape(test), expected);
    });

输出
Expected: ' \\ TESTTEST '
Actual: ' \\\\\\\\ TESTTEST '
Which: is different.
            Expected:  \\ TESTTEST  ...
              Actual:  \\\\\\\\ TES ...
                         ^
             Differ at offset 3

最佳答案

为了逃避,您可以使用

print(r"This is a test \. ABCDE ''' DEFG".replaceAll(r"\", r"\\").replaceAll(r"'''", r"\'''"));
// => This is a test \\. ABCDE \''' DEFG

在这里,您将所有反斜杠替换为带有.replaceAll(r"\", r"\\")的双反斜杠,然后将所有'''子字符串替换为\'''子字符串。

要转义,您可以使用
print(r"This is a test \\. ABCDE \''' DEFG".replaceAll(r"\'''", r"'''").replaceAll(r"\\", r"\"));
// => This is a test \. ABCDE ''' DEFG

在这里,您首先将所有\'''子字符串替换为'''子字符串,然后将两个反斜杠替换为单个反斜杠。

关于regex - 如何使用正则表达式对反斜杠和 ''进行转义和不转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61346649/

相关文章:

flutter - 如何在 flutter 中更改 checkBoxListTile 中的复选框颜色?

dart - 用于导航流的 Flutter Bloc

flutter - ListView 到达结束前的网络请求。延迟加载

dart - Flutter AbsorbPointer 与 IgnorePointer 的区别

regex - 根据大写字母拆分字符串

ruby - rails 在保存前去除非数值

python - 如果逗号不在括号之间,则用逗号分隔,同时允许字符在括号之外并在同一逗号分隔中

flutter - 如何从Flutter中的获取请求中获取一个数据

dart - 断言失败 : line 3927 pos 14: '_dependents.isEmpty' : is not true

javascript - 为什么正则表达式构造函数需要双重转义?