HPCC ECL REGEX 环视背靠背值
Posted
技术标签:
【中文标题】HPCC ECL REGEX 环视背靠背值【英文标题】:HPCC ECL REGEX lookaround back-to-back values 【发布时间】:2016-07-28 21:47:03 【问题描述】:我正在使用此处定义的 REGEX 库http://userguide.icu-project.org/strings/regexp
话虽如此,我有一个具体问题想使用正则表达式来纠正。
Input := '!Tim !~ Dan~';
Output := Tim !~ Dan
REGEXREPLACE('((?<![!])~)' ,Input,' '); //Results in : !Tim !~ Dan
REGEXREPLACE('((?![~])!)|((?<![!])~)',Input,' '); //Results in : Tim ~ Dan
这个语句是怎么导致的!后面的~要去掉?
如何全部删除!和 ~ 不删除 !~ 在单个正则表达式命令中的组合。
如果您能告诉我如何制作,可以获得奖励积分!~!在一个命令中工作。
谢谢!!
【问题讨论】:
【参考方案1】:您可以使用以下正则表达式:
(!~)|[!~]
并替换为$1
反向引用。请参阅regex demo。
详情:
(!~)
- 匹配 并捕获到第 1 组 !~
字符序列
|
- 或
[!~]
- 单个 !
或 ~
字符
$1
反向引用将存储在第 1 组中的值重新插入到结果字符串中。
【讨论】:
所以这基本上表示将组 1 内的任何内容替换为自身,并将组外的任何内容替换为空字符串。我原以为 $1 会替换字符集的每个实例。为什么不是这样?$1
是numbered backreference。它是指在模式中使用相应的捕获组捕获的文本。 capturing group 是模式中的一对非转义括号。
好的,对于其他人来说值得注意的是, (!~)|[!~] 不能反过来引用,否则在找到 Group 之前,集合中的字符会被替换。跨度>
以上是关于HPCC ECL REGEX 环视背靠背值的主要内容,如果未能解决你的问题,请参考以下文章