在 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 thenngx.say("First part: ", first_part)ngx.say("Second part: ", second_part)elsengx.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 thenngx.say("First part: ", m[1])ngx.say("Second part: ", m[2])elsengx.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
函数和正则表达式,分割字符串。正则表达式([^_]+)_([^_]+)
匹配下划线_
前后的非下划线字符,并分别捕获这两部分。
这两种方法都可以实现将字符串按照下划线 _
分隔成两部分。你可以根据自己的喜好和需求选择其中一种方法。