【问题标题】:Unbalanced `^` and `$` anchors in Oracle regexpOracle 正则表达式中不平衡的 `^` 和 `$` 锚点
【发布时间】:2013-04-12 06:24:38
【问题描述】:

为什么在某些情况下,字符串开始锚的数量不等于字符串结束锚的数量?

regexp_count(chr(10)||'A'||chr(10)||'B', '^') = 2
regexp_count(chr(10)||'A'||chr(10)||'B', '$') = 1

UPD:
在多线模式下,不平衡具有相反的方向:

regexp_count(chr(10)||'A'||chr(10)||'B', '^', 1, 'mn') = 1 
regexp_count(chr(10)||'A'||chr(10)||'B', '$', 1, 'mn') = 3

fiddle

【问题讨论】:

  • 看起来像一个错误。 chr(10) 后跟任何匹配 2 ^ 这对于单行模式来说是无稽之谈
  • @AlexPoole - 你说“总是”? :-) 查看我更新的问题。
  • 不要关闭这个问题。
  • @EgorSkriptunoff - 我知道一旦我写了它就会回来咬我*8-)。但似乎是 n 修饰符破坏了您的更新版本;只需m 似乎还可以。 (这是在 11.2.0.2 上;尚未测试任何其他版本,但不太可能在 11gR1 上更好,并且在此之前不存在。在 MOS 上看不到任何相关内容)。

标签: regex oracle


【解决方案1】:

经过调查,Oracle 支持部门认为此问题是一个错误。

错误 16707134:REGEXP_COUNT 模式“^”和新行意外行为

【讨论】:

  • 能否请您联系 Oracle Support 以解决我另一个 question 中的类似问题?
  • @EgorSkriptunoff 抱歉,现在我无法访问 Metalink。但是您可以在 Oracle 社区论坛 forums.oracle.com/forums/category.jspa?categoryID=18 上提出这个问题,这个论坛似乎受到 Oracle 支持专家的监控,看起来是获得权威答案的有用场所。
  • @ThinkJet 你检查过 chr(10) 和 V$NLS_PARAMETERS 吗?
  • @AndrewWolfe 当然,不。您能否指出V$NLS_PARAMETERS 中可能影响regexp_count 函数行为的特定参数?
猜你喜欢
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2014-09-26
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多