不以元音开头或结尾的单词的正则表达式?

Regular expression for words not starting or ending with vowels?

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

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

字如:
南不列颠
里弗斯交界处
飞燕草
绍斯波特
康普顿
林登
塞奇威克
休斯顿
塞勒
黑豹燃烧

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

问题是问 "ends with OR starts with" 你可以在正则表达式中做到这一点,但我在 WHERE 子句

中作为 OR 做到了

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

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

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

简单易读的解决方案

SELECT DISTINCT city
FROM station
WHERE city NOT REGEXP '^[aeiou]' AND city NOT REGEXP '[aeiou]$'

下面是最简单的MS SQL服务器命令,你可以想出-

SELECT DISTINCT CITY
FROM STATION
WHERE CITY LIKE '[^aeiouAEIOU]%' OR CITY LIKE '%[^aeiouAEIOU]';

再简单不过了。

在MYSQL中我使用了:

Select distinct City from STATION where City RLike "^[^aeiou].*|[^aeiou]$"