Регулярное выражение MySQL - не начинается и не заканчивается гласными - PullRequest
0 голосов
/ 07 июля 2019

Я играл с этим заданием здесь: Станция наблюдения за погодой 12

И я попытался отправить этот ответ:

SELECT DISTINCT CITY FROM STATION
WHERE CITY NOT REGEXP '^[aeiouAEIOU].*[aeiouAEIOU]$'

Я знаю, что этот ответ работает(вдохновленный этим очень похожим вопросом ):

SELECT DISTINCT CITY FROM STATION
WHERE CITY NOT RLIKE '^[aeiouAEIOU]' AND CITY NOT RLIKE '[aeiouAEIOU]$'

... Но я не мог написать принятый ответ в одном регулярном выражении.Кто-нибудь может объяснить почему?


Что он ищет в

Как отметил комментатор, для написания вышеупомянутой страницы требуется вход в систему.Так что ради хороших мер я добавлю здесь, что он ищет среди 500 названий городов, таких как (каждое в своей строке в базе данных):

Kissee Mills, Loma Mar, Sandy Hook, Tipton, Arlington, Turner, Slidell, Negreet, Glencoe, Chelsea, Chignik Lagoon, Pelahatchie, Hanna City, Dorrance, Albany, Monument, Manchester, Prescott, Graettinger, Cahone, Sturgis, Upperco, Highwood, Waipahu, Bowdon, Tyler, Watkins, Republic, Millville, Aguanga, Bowdon Junction, Morenci, South El Monte 

Различия междурегулярные выражения

И я слышал, что есть небольшие отличия в регулярных выражениях от одного языка к другому (PHP, JavaScript, Perl, MySQL, Ruby и т. д.).Но я не могу найти страницу, которая объясняет, каковы эти различия.Я мог бы сесть и прочитать документацию по каждому языку и дать перекрестную ссылку на него, но нет ли места, где он был бы обобщен?

Добавление: Я пришел из мира PHP, и каждый раз, когда я пишу регулярное выражение в MySQL, возникает сомнение: «Это одна из тех вещей, которыеразные?'.В идеале я искал место, где я мог бы убить это сомнение.Тем более, что это так сложно для Google, потому что регулярные выражения настолько пунктуальны.

1 Ответ

2 голосов
/ 07 июля 2019

Используйте класс символов [^aeiou] для представления не гласного символа:

SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[^aeiou].*[^aeiou]$';

Я предполагаю, что название города всегда будет содержать не менее двух символов. Обратите внимание, что REGEXP не чувствителен к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...