SQLite регулярное выражение для поиска строк со строками не в предопределенном наборе - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть столбец SQLite 3, который может содержать несколько различных строк, соединенных +.Допустимы только некоторые строки, и я хочу найти строки, в которых этот столбец содержит все, что не является частью действительного набора строк.

Например, это допустимые строки

1 2.4 5X 0A

Поэтому, если столбец содержит 1+2.4+0A, он действителен, ноесли он содержит 1+2.4+6X, он недействителен (потому что 6X не является частью действительного набора).Аналогично, 1 2.4 будет недопустимым, поскольку 1 и 2.4 должны быть разделены +.

Я попытался поэкспериментировать с регулярными выражениями, но не могу создать такой, который допускает только строкив действительном списке.Буду признателен за любую помощь, и, как уже говорилось, мне нужно это для работы с SQLite 3.

1 Ответ

0 голосов
/ 25 декабря 2018

Вы можете использовать (?:1|2\.4|5X|0A), чтобы получить группу всех допустимых строк.Затем вы можете проверить, начинается ли строка с допустимой строки, за которой следует любое количество допустимых строк, перед которыми стоит + до конца ^(?:1|2\.4|5X|0A)(?:\+(?:1|2\.4|5X|0A))*$.

Это приведет к чему-то вроде

SELECT *
       FROM elbat
       WHERE nmuloc REGEXP '^(?:1|2\.4|5X|0A)(?:\+(?:1|2\.4|5X|0A))*$';

чтобы получить записи с правильными строками.(Откажитесь, чтобы получить недействительные.)

Если вы также хотите, чтобы пустые строки были действительными, не уверены в своем описании, если они в порядке, расширьте его до ^(?:1|2\.4|5X|0A)(?:\+(?:1|2\.4|5X|0A))*$|^$.

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