GREL替换函数需要3个字符串,或一个字符串,一个正则表达式和一个字符串。 在用于替换的第三个字符串中,某些字符具有特殊的行为:\,\,\ t,\ n,\',\”以及其他一些组合。 \什么也不做,或者出错 \被解释为\ \ t被解释为制表符 \ n被解释为换行 \”被解释为“ \'被解释为'
例如: “ abab” .replace('b',“ \”)->“在偏移量19处解析错误:缺少数字,字符串,标识符,正则表达式或带括号的表达式”
“ abab” .replace('b',“ \ t”)-> a
我想它与Java有关... 还有其他特殊组合吗? 它记录在Wiki的某个地方吗?
答案 0 :(得分:2)
在字符串中,反斜杠(\)具有特殊含义。它基本上说不应以通常的意义来考虑以下字符。这就是为什么字符串“ t”只是字母t,而“ \ t”表示tab
的原因。
此转义字符还用于在字符串中包含引号。例如,字符串“ L'alouette”将引发错误,因为它包含的引号与字符串周围的引号相同。可以通过转义内部的':'L \'alouette'(或使用双引号:“ l'alouette”)来避免此问题
在您的示例中,OpenRefine理解您要转义第二个引号(“ \”),并认为您的字符串未完成。在这种情况下,正确的语法应是转义\本身:"abab".replace('b', "\\")
特殊字符列表
| Special characters | Display |
|--------------------|-----------------------|
| \' | Single quotation mark |
| \" | Double quotation mark |
| \\ | Backslash |
| \t | Tab |
| \b | Backspace |
| \r | Carriage return |
| \f | Formfeed |
| \n | Newline |