openrefine - 替换功能中的特殊字符
问题描述
GREL 替换函数需要 3 个字符串,或一个字符串、一个正则表达式和一个字符串。在用于替换的第 3 个字符串中,某些字符具有特殊行为:\、\、\t、\n、\'、\" 以及其他一些组合。\ 什么都不做,或者错误 \ 被解释为 \ \t被解释为制表符 \n 被解释为换行符 \" 被解释为 " \' 被解释为 '
例如:“abab”.replace('b',"\") ->“偏移 19 处的解析错误:缺少数字、字符串、标识符、正则表达式或带括号的表达式”
"abab".replace ('b',"\t") -> aa
我想它与Java有关......还有其他特殊组合吗?它是否记录在 wiki 上的某个地方?
解决方案
在字符串中,反斜杠 (\) 具有特殊含义。它基本上说不应该按照通常的意义考虑以下字符。这就是为什么字符串 "t" 只是字母 t,但 "\t" 表示 a 的原因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 |
推荐阅读
- python - For循环内的while循环不适用于字符串匹配
- solr - 如何在 Windows 中添加 solr 内核?
- python - 如何使用 crontab 自动启动在 virtualenv 中运行的 python 脚本?
- tensorflow - 未能分配 X 字节统一内存;结果:CUDA_ERROR_OUT_OF_MEMORY:内存不足
- javascript - 在 React 中缩短导入
- sql - 从两个实体表Postgresql中随机填充关系表
- android - setJavaScriptEnabled(false) 是否修复跨应用脚本漏洞
- git - 如何使用拉取请求创建 gitflow 版本?
- javascript - 该函数运行的次数超过了它应该运行的次数
- sql-server - #WPF ToastNotifications 返回 2 个异常