元音的正则表达式负向前瞻

时间:2013-07-11 20:24:49

标签: java regex

我想要一个Java正则表达式字符串,它可以找到字符串中的所有元音,除非它们:

  1. 是第一个字符或
  2. 下划线后面的下一个字符
  3. AREA_ID成为
    AR_ID

    LONG_NAME成为
    LNG_NM

    HOME_ALONE成为
    HM_ALN

    我玩过http://gskinner.com/RegExr和 我目前有以下正则表达式替换所有元音,除非它是起始字符

    (?!^[AEIOU])[AEIOU]
    

    我无法弄清楚如何获得第二部分(忽略紧跟下划线的元音)。

1 个答案:

答案 0 :(得分:1)

我猜你正在使用JavaScript,在这种情况下会这样做:

(?!(?:^|_))_?[AEIOU]

但是,如果您使用的是支持lookbehinds的正则表达式,请尝试以下方法:

(?<!^)(?<!_)[AEIOU]

请注意,需要两个lookbehinds,因为lookbehind必须具有固定长度,“字符串的开头或下划线”不会。