【问题标题】:How to match all alphabet except few?如何匹配除少数之外的所有字母?
【发布时间】:2015-04-25 01:27:28
【问题描述】:

我只想匹配[a-z],除了字母a,e,i,o,u

使用否定集[^aeiou]* 我可以匹配除a,e,i,o,u 之外的所有内容,但是如何将我的everything 限制为[a-z]

这可以在 XML Schema、XPath、.NET (2.0+) 和 JGsoft 正则表达式风格中使用字符类减法 ([a-z-[aeiou]]) 轻松完成,但我如何在 PCRE 中做到这一点?

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

    您可以使用否定的前瞻断言。这就像一种减法。

    (?![aeiou])[a-z]
         ^        ^
         |        |
    subtract    from
    

    DEMO

    【讨论】:

    • 完美!.. 可以分组捕获比赛吗?我试过(?![aeiou])([a-z])+?DEMO..匹配是单个字母..
    • 我认为,您需要将括号包裹在整个 RE:((?![aeiou])[a-z]) 一个,或 ((?:(?![aeiou])[a-z])+) 多个(一个或多个)。在我建议的第一个 RE 之后,您可能只需一个 + 就可以逃脱。
    • @hwnd 字母不是a,e,i,o,u.. 例如.. 在这个demo.. bcd, fghjklmnpqrst, vwxyz
    • 这可以写成((?:(?![eiou])[b-z])+)
    • 谢谢!我正在尝试使用 Microsoft Word 中的通配符搜索。但是 Word 不接受这种从所有小写字母中排除 i 的语法:(?![i])[a-z]。感谢您的想法!
    猜你喜欢
    • 2020-01-15
    • 2016-01-02
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多