Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 正则表达式过滤器换行搜索_Sql_Regex_General Log - Fatal编程技术网

Sql 正则表达式过滤器换行搜索

Sql 正则表达式过滤器换行搜索,sql,regex,general-log,Sql,Regex,General Log,我需要从日志中过滤查询,它需要查找换行符,而我一直在使用正则表达式过滤换行符 下面是我要筛选的日志的示例 139 Connect root@localhost as anonymous on 139 Query SET CHARACTER SET 'utf8mb4' 139 Query SET collation_connection = 'utf8mb4_unicode_ci' 139 Query SELECT CURRENT_USER()

我需要从日志中过滤查询,它需要查找换行符,而我一直在使用正则表达式过滤换行符

下面是我要筛选的日志的示例

      139 Connect   root@localhost as anonymous on 
      139 Query SET CHARACTER SET 'utf8mb4'
      139 Query SET collation_connection = 'utf8mb4_unicode_ci'
      139 Query SELECT CURRENT_USER()
      139 Query FLUSH PRIVILEGES
      139 Query SELECT * FROM `mysql`.`db` LIMIT 1
      139 Query DELETE FROM `mysql`.`db` WHERE `host` = "" AND `Db` = "" AND `User` = "" LIMIT 1
      139 Query INSERT INTO `mysql`.`db`(`host`, `Db`, `User`) VALUES("pma_test_host", "mysql", "pma_test_user")
      139 Query DELETE FROM `mysql`.`db` WHERE host = "pma_test_host" AND Db = "mysql" AND User = "pma_test_user" LIMIT 1
      139 Query UPDATE `mysql`.`db` SET `host` = "" WHERE `host` = "" AND `Db` = "" AND `User` = "" LIMIT 1
从日志文本中,我使用了如下正则表达式

(?=Query).*
但搜索结果只显示在一行中

Query   SET CHARACTER SET 'utf8mb4'
因为我在正则表达式中使用了“.”字符,这意味着不在新行中进行搜索。我尝试以几种方式放置“\n”,但无效。我需要一个建议来得到这样的结果:

Query   SET CHARACTER SET 'utf8mb4'
          139 Query SET collation_connection = 'utf8mb4_unicode_ci'
          139 Query SELECT CURRENT_USER()
          139 Query FLUSH PRIVILEGES
          139 Query SELECT * FROM `mysql`.`db` LIMIT 1
          139 Query DELETE FROM `mysql`.`db` WHERE `host` = "" AND `Db` = "" AND `User` = "" LIMIT 1
          139 Query INSERT INTO `mysql`.`db`(`host`, `Db`, `User`) VALUES("pma_test_host", "mysql", "pma_test_user")
          139 Query DELETE FROM `mysql`.`db` WHERE host = "pma_test_host" AND Db = "mysql" AND User = "pma_test_user" LIMIT 1
          139 Query UPDATE `mysql`.`db` SET `host` = "" WHERE `host` = "" AND `Db` = "" AND `User` = "" LIMIT 1

您可以使用类似的正则表达式

(?=Query)[\s\S]*

它将检查当前位置左侧是否有
Query
,然后将消耗(将放入匹配值)任何0+字符(包括换行符)。

如果您不让我们知道您在哪里使用正则表达式,则无法为您提供帮助。也许,
(?)s)(?=Query.*
会起作用。或者
(?=Query)[\s\s]*
我在java中使用正则表达式,谢谢,我会尝试一下,
(?=Query)。*
可以用。(?=Query)[\s\s]*这个查询可以用!谢谢你的回答!很高兴它对你有用。请考虑通过点击来接受答案。✓ 在左边(参见)。