Mysql 正则表达式匹配字符串中的精确数字,不带前向或后向
假设我正在寻找一个带有换行符的字符串中的特定数字: 1\n2\n4\n5\n7\n8\n9\n12\n13 Lookahead和Lookahead与以下内容完美配合:Mysql 正则表达式匹配字符串中的精确数字,不带前向或后向,mysql,regex,mysql-5.7,Mysql,Regex,Mysql 5.7,假设我正在寻找一个带有换行符的字符串中的特定数字: 1\n2\n4\n5\n7\n8\n9\n12\n13 Lookahead和Lookahead与以下内容完美配合: (?<![0-9])12(?![0-9]) 看 但是,我需要一个MySQL REGEXP的解决方案,因为它不支持带有lookarounds的模式。If?适用于在线正则表达式引擎,以下正则表达式必须适用于基于POSIX的正则表达式模式: ^|[^0-9]12$|[^0-9] 或者,您可以使用单词边界: [[:<:]]1
(?<![0-9])12(?![0-9])
看
但是,我需要一个MySQL REGEXP的解决方案,因为它不支持带有lookarounds的模式。If?适用于在线正则表达式引擎,以下正则表达式必须适用于基于POSIX的正则表达式模式:
^|[^0-9]12$|[^0-9]
或者,您可以使用单词边界:
[[:<:]]12[[:>:]]
看
详情:
^|[^0-9]-字符串或非数字字符的开头
[[::]]-尾随单词边界
$|[^0-9]-字符串结尾或非数字。
对于MySQL 8.0
"\\b12\\b"
或
前者检查单词边界,可能更好。后者检查空白,例如\n
根据客户端的不同,双反斜杠可能有点过分。MySQL版本是什么?您确定字符串中的换行符不是换行符吗?事实上,该换行符是在Joomla表单的复选框组中进行不同选择的结果!Pro窗体并在sql字段值中产生换行符。MySQL版本5.7.31我的查询Joomla为$i=0$isetQuerySELECT从uuu rsform_usubmission_u值中选择COUNT*,其中FormId='.JRequest::getInt'FormId.'和FieldName='plages'和FieldValue REGEXP.$i+1。[[:>:]]。。。。。但是REGEXP将无法处理像1\n12这样的结果……查找2将捕获12中的2抱歉,我的意思是^ |[^0-9]12$|[^0-9]。
"\\s12\\s"