gpt4 book ai didi

php - 在并不总是存在的两个字符串之间的列中定位特定字符串?

转载 作者:行者123 更新时间:2023-11-29 01:53:25 25 4
gpt4 key购买 nike

长话短说,假设我在“表”中名为“whyisthisalist”的列中有一个字段,其中包含:

{example1:"hereistext";example2:"ohlookmoretext";example3:"isthisevenreal"}

如果 example2 并不总是存在,我将如何提取 example1 和 example2 之间的文本,因为它也可能看起来像这样:

{example1:"hereistext";example7:"ohlookmoretext"}

如果一切顺利,它应该返回“hereistext”。

到目前为止我的想法:

$sql = "SELECT SUBSTRING(LEFT(whyisthisalist, LOCATE('\";', whyisthisalist) +0), LOCATE('example1:\"', whyisthisalist) +0, 100)
FROM table
WHERE LOCATE('\";', whyisthisalist) > 0
AND LOCATE('example1:\"', whyisthisalist) > 0 ORDER BY id DESC LIMIT 1";

需要做什么/不起作用:我需要让 NEXT 出现 "; 在上一个定位的字符串之后。这甚至可能吗?还是有任何其他解决方法?我很乐意提供一些帮助。

最佳答案

以下正则表达式将为您提供从第一个冒号到第一个分号的所有内容:

\:([^;]*)

像这样简化您的查询:

SELECT `whyisthisalist` REGEXP '\:([^;]*)'
FROM `table`

MySQL REGEX docs
MySQL Pattern Matching

您还可以使用 lookahead's and lookbehind's对于正则表达式:

(?<=example1:)(.+?)(?=\;)

关于php - 在并不总是存在的两个字符串之间的列中定位特定字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com