【问题标题】:Using Regular Expressions to replace a select instance of a character使用正则表达式替换字符的选择实例
【发布时间】:2014-02-01 07:14:56
【问题描述】:

首先,这不是家庭作业/学校问题。这是我个人项目所需要的,并且能够使用以下简单字符概括问题:

为输入字符串 aaabaabaa(或类似)创建一个可在 java 字符串 replaceAll 函数中使用的正则表达式,并将每个 a 转换为 A,除非它前面有 a b。所以预期的输出是 AAAbaAbaA。我已经尝试了至少 2 个小时...我能想到的最好的方法是:

replaceAll("^a|([^b])a", "$1A");

这在 aaa 上失败,返回值为 AaA

我想说“在它应该是 A 之前,任何没有 'b' 的 'a'。对于 RegEx 新手有什么想法吗?非常感谢!

【问题讨论】:

    标签: java regex


    【解决方案1】:

    尝试使用否定的lookbehind:

    str.replaceAll("(?<!b)a", "A");
    

    这将匹配任何a 紧跟在b之前。

    【讨论】:

    • 是的,这就是我缺少的功能。我不知道前瞻或后视。自从我使用正则表达式已经有几年了,我不确定我曾经使用过那些!不过非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    相关资源
    最近更新 更多