Mysql 字符串的Regexp
我想要一个正则表达式来匹配所有字符串,比如'T'或'T-Th',而不是只包含'Th'的值 我当前的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 如果我的逻辑正确,您希望字符串
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%'