regex 如何使用正则表达式查找包含单引号/用单引号括起来的查询

ecbunoof  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(178)

作为标题,我有问题,在寻找句子,或在我的情况下,一个mysql查询字符串,有单引号内的一个封闭的单引号单词。
例如:

UPDATE `blog` SET `BlogDesc` = 'dummy texts' , `BlogHeadlinePic` = 'images12.png' where `BlogId` = 'abcdef';
update `blog` set `BlogDesc` = 'lorem's ipsum' , `BlogHeadlinePic` = 'images.png' where `BlogId` = 'abc'; #need to detect this query
ggazkfy8

ggazkfy81#

试试这个:

^.*'(?:[^'=`;]*'){2}.*;$
  • ^行/字符串的开头。
  • .*匹配零个或多个字符,注意这将匹配'lorem's ipsum'之前的所有字符串。
  • '匹配单引号,我将其命名为quote1,例如,这是'lorem's ipsum'中的第一个单引号,位于单词lorem之前。
  • (?:[^'=;]*'){2}非捕获组。{2}`表示匹配整个组两次。
  • 第一次 *:
  • [^'=;]*匹配除'=、```和;之外的零个或多个字符,例如,这将匹配'lorem's ipsum'中的单词lorem`
  • '匹配一个单引号,我将其命名为quote2,例如,这是'lorem's ipsum'中的第二个单引号,它位于单词lorem之后。
  • 第二次 *
  • [^'=;]*匹配除了'=、```和;之外的零个或多个字符,例如,这将匹配'lorem's ipsum'中的字符串s ipsum`。
  • '匹配一个单引号,我将其命名为quote3,例如,这是'lorem's ipsum'中的第三个单引号,它位于单词ipsum之后。
  • .*匹配零个或多个字符,注意这将匹配'lorem's ipsum'之后的所有字符串
  • ;确保您的查询中的字符串以;结尾。
  • $确保它是行/字符串的结尾。

参见regex demo

    • 编辑**

如果你只想得到像'lorem's ipsum'这样的东西,而不是整个查询,那么就使用这个正则表达式。

'(?:[^'=`;]*'){2}

参见regex demo

相关问题