对于没有以元音开头或结尾的单词的正则表达式?

时间:2015-09-18 19:07:58

标签: regex regular-language

我使用了这个正则表达式:^[aeiou](\w|\s)*[aeiou]$ 对于以元音开头和结尾的单词,它工作正常。

但是当我使用这个正则表达式时: ^[^aeiou](\w|\s)*[^aeiou]$对于没有以元音开头和结尾的单词,它不起作用。你能告诉我第二个正则表达式有什么问题吗?

词语如下:
南英国 Rives Junction
飞燕草
绍斯波特
康普顿
林登
塞奇威克
Humeston
塞勒
黑豹烧伤

3 个答案:

答案 0 :(得分:1)

select distinct(city) from station
  WHERE regexp_like(city, '^[^aeiou](\w|\s)*$', 'i')
    OR regexp_like(city, '^(\w|\s)*[^aeiou]$', 'i');

问题是“以OR结尾”,你可以在正则表达式中执行,但我在OR子句中将其作为WHERE进行了

答案 1 :(得分:1)

如果我理解了所需的逻辑,如果你碰巧想要一个正则表达式,我会使用类似!/(^[aeiou](\w|\s)*)|((\w|\s)*[aeiou]$)/i的东西。当然,这不是最易读的格式,但应该只抓取那些以非元音开头和结尾的单词。

答案 2 :(得分:0)

游戏晚了,但如果是 MySQL,这对我有用:

SELECT DISTINCT CITY FROM STATION 
WHERE NOT REGEXP_LIKE(CITY,'[aeiou]$','i') 
OR NOT REGEXP_LIKE(CITY, '^[aeiou]','i');