gpt4 book ai didi

lua - 为什么这个 Lua 模式不起作用?

转载 作者:行者123 更新时间:2023-12-03 04:55:47 26 4
gpt4 key购买 nike

local querycreate = "create user 'dddqwd123_dwqd'@'localhost'"
local create, usercreate, username, userhost = querycreate:match("^(%w+)%s+(%w+)%s+\'(%w)\'@\'(%w)\'$")
print(string.format("query: %s", querycreate))
print(string.format(" var create = %s \n var usercreate = %s \n var username = %s \n var userhost = %s", create, usercreate, username, userhost))

query: create user 'dddqwd123_dwqd'@'localhost'
var create = nil
var usercreate = nil
var username = nil
var userhost = nil

我的正则表达式在 http://regexr.com?37voi 上运行良好.

如果我将其更改为 ("^(%w+)%s+(%w+)%s+"),则会输出:

var create = create
var usercreate = user
var username = nil
var userhost = nil

如果我通过将 querycreate 设置为 "create user dddqwd123_dwqd @ localhost" 并使用 ^(%w+)%s+(%w+) 来删除引号%s+(%w+) @ (%w+)$,则输出正常。

最佳答案

您的初始模式:

"^(%w+)%s+(%w+)%s+\'(%w)\'@\'(%w)\'$"
  • 模式中的最后两个捕获缺少 + 说明符来指示它们要读取 1 个或多个字符。
  • _ 不是与 %w 匹配的单词字符。您将需要一个包含 _ 的字符类,您需要在任何地方进行匹配。
  • " 引用的字符串中不需要转义 '
<小时/>

有一些改进:

"^(%w+)%s+(%w+)%s+'([%w_]+)'@'([%w_]+)'$"

或者:如果您想匹配一组引号 ' 中的任何内容,您可以匹配它的逆类:

"^(%w+)%s+(%w+)%s+'([^']*)'@'([^']*)'$"

([^']*) 将捕获除 ' 以外的任何内容(包括任何内容),直到字符串末尾或 '<找到

关于lua - 为什么这个 Lua 模式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097803/

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