【问题标题】:HPCC ECL REGEX lookaround back-to-back valuesHPCC ECL REGEX 环视背靠背值
【发布时间】: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

这个语句是怎么导致的!后面的~要去掉?

如何全部删除!和 ~ 不删除 !~ 在单个正则表达式命令中的组合。

如果您能告诉我如何制作,可以获得奖励积分!~!在一个命令中工作。

谢谢!!

【问题讨论】:

    标签: regex regex-lookarounds negative-lookahead negative-lookbehind hpcc-ecl


    【解决方案1】:

    您可以使用以下正则表达式:

    (!~)|[!~]
    

    并替换为$1 反向引用。请参阅regex demo

    详情

    • (!~) - 匹配 并捕获到第 1 组 !~ 字符序列
    • | - 或
    • [!~] - 单个 !~ 字符

    $1 反向引用将存储在第 1 组中的值重新插入到结果字符串中。

    【讨论】:

    • 所以这基本上表示将组 1 内的任何内容替换为自身,并将组外的任何内容替换为空字符串。我原以为 $1 会替换字符集的每个实例。为什么不是这样?
    • $1numbered backreference。它是指在模式中使用相应的捕获组捕获的文本。 capturing group 是模式中的一对非转义括号。
    • 好的,对于其他人来说值得注意的是, (!~)|[!~] 不能反过来引用,否则在找到 Group 之前,集合中的字符会被替换。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多