regex - 红移上的正则表达式匹配
问题描述
我在redshift上的正则表达式没有什么问题。当我在我的 scala 代码中使用它时,正则表达式工作正常,但不适用于红移。我知道红移的语法可能有所不同。有谁可以帮我离开这里吗。
正则表达式:(^VISA\s*MONEY\s*TRANSFER\s*.*\s*CASH\s*APP\**\s*.*Visa Direct CA.*\s*)
在红移中:
select *
from table where column ~ '(^VISA\s*MONEY\s*TRANSFER\s*.*\s*CASH\s*APP\**\s*.*Visa Direct CA.*\s*)' limit 2;
呃:
错误:XX000:重复运算符之前的正则表达式无效。解析正则表达式片段时出错:'ASHs*APP**>>>HERE>>>s*.*Visa D'。
解决方案
错误的原因在于'APP\**'
:由于您没有使用文字反斜杠,而是转义符号,因此在字符串转义序列的非预期第二个字符前面,反斜杠被引擎删除,并且生成的APP**
模式导致异常,因为量词本身无法量化。
您可以使用
select * from table where column ~ '^VISA\\s*MONEY\\s*TRANSFER.*CASH\\s*APP.*Visa Direct CA.*' limit 2;
我删除了一些多余的模式,并正确地转义了反斜杠。要输入文字反斜杠,您需要在字符串文字中将其加倍。
推荐阅读
- java - 避免java中的重复服务调用
- javascript - 如何使用 useState 挂钩更新对象的状态以保持现有元素?
- javascript - 反应库测试没有更新我的屏幕
- mysql - 在 GROUP BY 连接中选择最高值
- c++ - Parse txt - 搜索字符串,如果从下面的行中找到解析数字
- python - ValueError:layersequential_1 的输入 0 与 layer 不兼容::预期 min_ndim=4,发现 ndim=3。收到的完整形状:[无、256、256]
- reactjs - 未使用 firebase 正确部署反应应用程序
- python - 如何在python中自动动态创建类的实例
- angularjs - 即使视频(及其容器)设置为“显示:无”,也会播放音频;
- jquery - php和jquery制作的小问题比较脚本