在 OpenResty 中,可以使用 Lua 提供的字符串操作函数 string.match
或 ngx.re.match
来将字符串按照下划线 _
分隔成两部分。下面是一个示例代码,展示如何实现这一功能:
使用 string.match
实现
http {
server {
listen 80;
server_name localhost;
location /split_string {
default_type text/plain;
content_by_lua_block {
-- 定义要分割的字符串
local str = "part1_part2"
-- 使用 string.match 分割字符串
local first_part, second_part = string.match(str, "([^_]+)_([^_]+)")
if first_part and second_part then
ngx.say("First part: ", first_part)
ngx.say("Second part: ", second_part)
else
ngx.say("Failed to split string")
end
}
}
}
}
使用 ngx.re.match
实现
http {
server {
listen 80;
server_name localhost;
location /split_string {
default_type text/plain;
content_by_lua_block {
-- 定义要分割的字符串
local str = "part1_part2"
-- 使用 ngx.re.match 分割字符串
local m, err = ngx.re.match(str, "([^_]+)_([^_]+)")
if m then
ngx.say("First part: ", m[1])
ngx.say("Second part: ", m[2])
else
ngx.say("Failed to split string: ", err)
end
}
}
}
}
解释:
-
string.match
实现:-
string.match(str, "([^_]+)_([^_]+)")
:使用 Lua 的string.match
函数和模式匹配,分割字符串。模式([^_]+)_([^_]+)
匹配下划线_
前后的非下划线字符,并分别捕获这两部分。
-
-
ngx.re.match
实现:-
ngx.re.match(str, "([^_]+)_([^_]+)")
:使用 OpenResty 提供的ngx.re.match
函数和正则表达式,分割字符串。正则表达式([^_]+)_([^_]+)
匹配下划线_
前后的非下划线字符,并分别捕获这两部分。
-
这两种方法都可以实现将字符串按照下划线 _
分隔成两部分。你可以根据自己的喜好和需求选择其中一种方法。