我正在开发一个项目,需要查找包含精确字符串的记录,或者作为精确格式的一部分使用相同的字符串。换句话说,如果字符串是“hello world”,那么数据库中可能会有... 10条记录具有此字段值,但该字段可能是以下之一:
"1. hello world"
"1 hello world"
"hello world"
"hello world (xyz)"
"1. hello world (xyz)"
"1 hello world (zyx)"
字符串“hello world”可以是任何内容,但前缀始终以数字开头或不存在,后缀始终以括号结尾或不存在。
我以为我用以下正则表达式破解了它,但这并没有返回任何记录:
WHERE fieldname REGEXP '^([0-9]+.*)?[[:<:]]hello world[[:>:]](.*\))?$'
另外,我之前从未使用过[[:&lt;:]] [[:&gt;:]],并假设这是要走的路,我不知道如何避开文本,因为这会是PHP生成的?文档说要将转义的反斜杠加倍,所以我猜猜mysql_real_escape_string是不够的......?
像往常一样,任何建议都会受到高度赞赏。
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以尝试将最后一部分[[:>:]](.*\))?$
更改为替代方案作为解决方法。
^([0-9].*)?[[:<:]]hello world($|[[:>:]].+[)]$)
如果不确定是否有转义,请尝试将特殊字符放入字符类[)]
和see this question以转义字符串的动态部分。