【问题标题】:Regex for escaping '^' in string用于在字符串中转义“^”的正则表达式
【发布时间】:2021-09-08 10:47:12
【问题描述】:

我在转义特殊字符时遇到问题。

我正在使用带有函数REGEXP_SUBSTR 的 Phoenix SQL 带参数(stringTermpatternStringstartInt

这是我的问题:

Case Original String String that I want to get
1 20000000001^11111111^15817001969^1 11111111
2 20000000001^11111111^15817001969^1 15817001969

这是目前为止我可以得到的,

SELECT REGEXP_SUBSTR('20000000001^11111111^15817001969^1','(\^|$)\w+') 

但是输出看起来很糟糕:

output: ^11111111

谁能帮我解决上述问题并帮助我解决问题?

非常感谢大家!

【问题讨论】:

  • 您的 SQL 版本是什么(例如 Oracle、MySQL、Postgres 等)?
  • 您在正则表达式中使用反斜杠转义特殊字符。您可能需要将其加倍,因为这也是 SQL 转义字符。
  • @TimBiegeleisen 我正在使用 Phoenix for SQL
  • @Barmar 正如我之前在上一条评论中提到的,查询效果不佳,我试图传递 2 '^' 字符,你的意思是我需要加倍反斜杠吗?
  • 将代码放在问题中,而不是注释中,以便您可以将其格式化。

标签: sql regex regex-lookarounds phoenix


【解决方案1】:

基本思路是:

select regexp_substr(str, '[^^]+', 1, n + 1)

[^^] 中,只有第一个^ 是“特殊的”。第二个是角色本身。

Here 是 Oracle 中的一个示例。

【讨论】:

  • 看起来2 参数应该是table_name.case + 1
  • @Barmar 。 . .谢谢。
猜你喜欢
  • 2010-09-21
  • 2011-06-23
相关资源
最近更新 更多