gpt4 book ai didi

PHP preg_match_all 匹配多种模式

转载 作者:搜寻专家 更新时间:2023-10-31 21:12:29 26 4
gpt4 key购买 nike

我有几个 10GB 的文件,其中包含 mysql 信息,我想针对特定表进行过滤。

查询看起来像这样(虽然可以有更少或更多的换行符):

SET INSERT_ID=2/\*!\*/;
at 858735202
121124 12:36:53 server id 1 end_log_pos 0 Query thread_id=9695754 exec_time=0 error_code=0
SET TIMESTAMP=1663753413/\*!\*/;

INSERT INTO `bank_accounts_daily`
(
`accounts_bank_md5` ,
`accounts_bank_payment_desc` ,
`accounts_bank_amount` ,
`accounts_bank_number` ,
`accounts_bank_sortcode` ,
`accounts_bank_currency` ,
`accounts_bank_date`,
`accounts_bank_code`
)
VALUES
(
'zxcvxzcvxzc4c9eeca78908296a2f007',
'NAMEJO M 1105294 BBP',
'278.50',
'645450441',
'20-55-19',
'1',
'26/55/2012',
'BBP'
)
/\*!\*/

我正在使用这个,它可以检索每一个语句:

preg_match_all('/(SET INSERT_ID=([0-9]+)\/\*\!\*\/\;)(.*?)(\/\*\!\*\/\;)(.*?)(\/\*\!\*\/)/s', $input, $output);

但是当我尝试扩展它并添加额外的模式以专门匹配“bank_accounts_daily”模式时,它不会检索任何内容(无论反引号是否被转义):

preg_match_all('/(SET INSERT_ID=([0-9]+)\/\*\!\*\/\;)(.*?)(\/\*\!\*\/\;)(.*?)(INSERT INTO \`bank_accounts_daily\`)(.*?)(\/\*\!\*\/)/s', $input, $output);

我不明白为什么这不起作用。我试过不带括号的变体,但没有任何效果。另外 - 我的方法是否存在我没​​有发现的任何潜在问题?

最佳答案

试试这个正则表达式:

/(SET INSERT_ID=([0-9]+)\/\\\*\!\\\*\/\;)(.*?)(\/\\\*\!\\\*\/\;)(.*?)(INSERT INTO `bank_accounts_daily`)(.*?)(\/\\\*\!\\\*\/)/s

您没有匹配 /\*!\*/ 标记中的反斜杠。我不明白原来的正则表达式是如何工作的,因为它也有这个错误。

关于PHP preg_match_all 匹配多种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16414331/

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