Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 字符串的Regexp_Mysql_Regex - Fatal编程技术网

Mysql 字符串的Regexp

Mysql 字符串的Regexp,mysql,regex,Mysql,Regex,我想要一个正则表达式来匹配所有字符串,比如'T'或'T-Th',而不是只包含'Th'的值 我当前的regexp是: REGEXP = '[T-Th]' 但是它匹配所有字符串“T”、“T-Th”和“Th”,而“Th”是不需要的括号之间的-字符是正则表达式的专用字符。当使用文字时,必须转义它。解决您的问题的一个好办法是: REGEXP = '(T-Th|T(?!h))' 我们要么从字面上匹配T-Th,要么匹配T,后面只跟一个h。换句话说:T,T-Th,但不是Th 如果我的逻辑正确,您希望字符串

我想要一个正则表达式来匹配所有字符串,比如'T'或'T-Th',而不是只包含'Th'的值

我当前的regexp是:

REGEXP = '[T-Th]' 

但是它匹配所有字符串“T”、“T-Th”和“Th”,而“Th”是不需要的

括号之间的
-
字符是正则表达式的专用字符。当使用文字时,必须转义它。解决您的问题的一个好办法是:

REGEXP = '(T-Th|T(?!h))'
我们要么从字面上匹配
T-Th
,要么匹配
T
,后面只跟一个
h
。换句话说:
T
T-Th
,但不是
Th


如果我的逻辑正确,您希望字符串中有一个
'T'
,并且希望
'T'
后面不跟
'h'

where col like '%T%' and
      replace(col, 'Th', '') like '%T%'

这并不完全清楚。你能给出应该匹配的字符串和应该被拒绝的字符串的具体完整示例吗?
[T-Th]
[Th]
相同(匹配的是T或h,而不是“Th”)。我想匹配诸如“T”之类的字符串,“T-Th”而不是仅包含值“Th”的字符串@ather0s提供了问题的示例。您的意思是字面上的
T
T-Th
,而不是以
T
Th
开头或包含
[]
字符类型意味着什么?
-
仅在字符类中是特殊的。除了不需要转义之外,我认为这可能是OP要求的…@MichaelBerkowski错误信息仍然是错误的,应该在被接受之前纠正。否则你会用一瓶好酒吞下毒药。@user2864740我不反对。我的评论更多地指出了一个事实,即这个问题还真的不清楚。实际上@user2864740是对的,但反斜杠也能起作用。更正!
where col like '%T%' and
      replace(col, 'Th', '') like '%T%'