我使用了这个正则表达式:^[aeiou](\w|\s)*[aeiou]$
对于以元音开头和结尾的单词,它工作正常。
但是当我使用这个正则表达式时:
^[^aeiou](\w|\s)*[^aeiou]$
对于没有以元音开头和结尾的单词,它不起作用。你能告诉我第二个正则表达式有什么问题吗?
词语如下:
南英国
Rives Junction
飞燕草
绍斯波特
康普顿
林登
塞奇威克
Humeston
塞勒
黑豹烧伤
答案 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');