我需要一些关于 RegEx 的帮助。这个概念很简单,但实际的解决方案远远超出了我所知道的任何东西。如果有人能解释我如何达到我想要的效果(并用任何示例代码提供解释),将不胜感激!
基本上,想象一个存储以下字符串的数据库表:
'My name is $1. I wonder who $2 is.'
首先,请记住美元符号数字格式是一成不变的。这不仅适用于这个例子——这就是这些通配符的实际存储方式。我想要一个像下面这样的输入能够返回上面的字符串。
'My name is John. I wonder who Sarah is.'
我将如何创建一个使用这种格式的通配符进行搜索的查询,然后返回适用的行?我想正则表达式将是最好的方法。请记住,理论上,应该可以接受任意数量的通配符。
现在,这是我现有查询的一部分,将内容拖出数据库。存在连接等,因为在单个数据库单元中,有多个字符串由竖线连接。
AND CONCAT('|', content, '|')
LIKE CONCAT('%|', '" . mysql_real_escape_string($in) . "', '|%')
我需要修改 ^this 行以使用作为查询一部分的变量,同时保持当前效果(竖线等)到位。如果 RegEx 还考虑了柱,则可以删除 CONCAT() 函数。
这是一个带有连接的示例字符串,它可能出现在数据库中:
Hello, my name is $1.|Hello, I'm $1.|$1 is my name!
查询应该能够与字符串中的任何这些块匹配,然后在匹配时返回该行。变量$1
应被视为通配符。竖线将始终分隔块。