SQLite regex查找字符串不在预定义集中的行

SQLite regex查找字符串不在预定义集中的行,regex,sqlite,Regex,Sqlite,我有一个SQLite 3列,它可以包含一些由+连接的不同字符串。只有一些字符串是有效的,我想查找此列包含不属于有效字符串集的任何内容的行 例如,这些是有效字符串 12.45X0A 因此,如果列包含1+2.4+0A则该列有效,但如果列包含1+2.4+6X则该列无效(因为6X不是有效集的一部分)。同样,12.4也将无效,因为1和2.4必须用+分隔 我试着用正则表达式进行实验,但似乎无法构造一个只允许有效列表中的字符串的正则表达式。任何帮助都将不胜感激,如前所述,我需要它来处理SQLite 3 您可以

我有一个SQLite 3列,它可以包含一些由
+
连接的不同字符串。只有一些字符串是有效的,我想查找此列包含不属于有效字符串集的任何内容的行

例如,这些是有效字符串

1
2.4
5X
0A

因此,如果列包含
1+2.4+0A
则该列有效,但如果列包含
1+2.4+6X
则该列无效(因为
6X
不是有效集的一部分)。同样,
12.4
也将无效,因为
1
2.4
必须用
+
分隔

我试着用正则表达式进行实验,但似乎无法构造一个只允许有效列表中的字符串的正则表达式。任何帮助都将不胜感激,如前所述,我需要它来处理SQLite 3

您可以使用
(?: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))*$$^$
您可以使用
(?:1 | 2\.4 | 5X 1240a)
来拥有一组所有有效字符串。然后,您可以检查字符串是否以有效字符串开头,后跟任何数量的有效字符串,后跟
+
,直到以
^(?: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))*$$^$