【发布时间】:2018-07-04 19:53:30
【问题描述】:
我必须匹配用户定义的%variable% 格式的一些子字符串。
在文中这种情况可能是错误的:
abcd`%variabl%e%`abcd`%variable%`abcd
像%[^%]+% 这样的简单正则表达式匹配错误的值:
%variabl%
%abcd%
我只想让 %variable% 忽略 %variable%e% 和其他无效匹配。
PS: %variable1% 和 %variable2% 可能在同一行,我必须同时匹配它们。
有没有办法在不增加正则表达式复杂性的情况下做到这一点。
【问题讨论】:
-
预期输出是什么?对图案有什么要求?
-
可能你想要
%[^%]+(?=%) -
我可以推荐Regex101让你更容易测试,它还显示了你的正则表达式的解释。
-
我看起来,而不是匹配模式,您想搜索一组特定的值。你确定正则表达式是适合这项工作的工具吗?
-
如果您要求获取
%variabl%,%e%,%abcd%,%variable%,请注意这些是重叠匹配,这是正则表达式中的常见问题。你的正则表达式风格是什么?如果您想在 Oracle 中执行此操作,则不能仅使用regexp_substr,因为 Oracle 正则表达式引擎是基于 POSIX 的并且不支持环视。请用适当的语言标签标记问题,否则不清楚。