【发布时间】:2022-06-13 20:53:40
【问题描述】:
我目前正在努力处理以下输入:
# Time: 2022-06-01T20:00:00.000000Z
# User@Host: database[database] @ [10.10.10.10] Id: 8888888
# Query_time: 0.000450 Lock_time: 0.000160 Rows_sent: 1 Rows_examined: 2
SET timestamp=1654715324;
SELECT id
FROM table_name
WHERE field = 'some-data' AND another_field != 'random-stuff'
ORDER BY field_2;
我所有的输入数据都将与此类似。基本上我想检查某个查询出现了多少次。现在我有点卡住了,因为我的正则表达式无法过滤掉单引号之间的参数。
我想匹配以下内容:
SELECT id
FROM table_name
WHERE field = '' AND another_field != ''
ORDER BY field_2;
我已经设法使用以下 regExp 从上面的输入中获取查询,但现在这只会匹配确切的 sql。
/(?<=\d;\n).+?(?=;)/gmi
我想扩展这个正则表达式,这样它就会忽略单引号之间的任何内容。
非常感谢您的帮助!
【问题讨论】:
-
我不完全确定,但您是否正在寻找这样的东西? stackoverflow.com/a/42048037/2591131
-
不一定,现在有一个唯一标识符,但在那些单引号之间可能有任何东西。一个变量甚至可以有不止一个两个单引号的实例。
-
混合使用了单引号,因此通过一些调整,可能会出现这样的情况:(?
-
不幸的是,这对我也不起作用。查询可以有多个字段,在任何情况下唯一正确的是它用单引号引起来。我会用我想要匹配的内容更新问题
-
我认为您需要稍微重新表述您的问题,并添加一些示例,说明您可能会得到什么以及您期望结果看起来像什么......这将大大有助于理解你想要达到的目标。
标签: regex