【问题标题】:Regex: find two consonants together but not in a list正则表达式:一起找到两个辅音但不在列表中
【发布时间】:2021-06-28 22:12:27
【问题描述】:

我需要一个正则表达式来找到两个元音之间的两个辅音,但这些辅音不应该在一个列表中:

例如,我的黑名单是 (br|bl|cn|cr)

between = It's good because 'tw' is not in the list.
abroad = it's wrong because 'br' is in the black-list.

但我只需要最后两个辅音元音:

between = I only need 'we' no 'et'.

我有以下正则表达式,但我不知道如何检查捕获的辅音是否在列表中。

"[aeiou]([^aeiou]{2})[aeiou]"

我用“([^aeiou]{2})”捕获了辅音,但是如何检查捕获的“\1”是否在黑名单中?

【问题讨论】:

  • 看来你需要^(?!.*(?:br|bl|cn|cr)).*[b-df-hj-np-tv-z]{2}
  • regex引擎中应该有negative-lookahead或negative-lookbehind非捕获组。
  • @Aaron 你的回答也一样...你能举个小例子吗?
  • 嗨@jhnc,你的回答也一样。你是对的,我的错误......我做出了改变。

标签: regex


【解决方案1】:

你可以使用

(?<=[aeiou](?!(?:br|bl|cn|cr))[b-df-hj-np-tv-z])[b-df-hj-np-tv-z][aeiou]
(?<=[aeiou](?!(?:b[rl]|c[nr]))[b-df-hj-np-tv-z])[b-df-hj-np-tv-z][aeiou]

regex demo

详情

  • (?&lt;=[aeiou](?!(?:br|bl|cn|cr))[b-df-hj-np-tv-z]) - 正向回溯,需要一个小写 ASCII 元音字母,然后是一个 ASCII 小写辅音字母,它不是 brblcncr 字符序列的起点
  • [b-df-hj-np-tv-z] - 一个辅音小写 ASCII 字母
  • [aeiou] - 小写 ASCII 元音字母

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多