[오리지널] OpenResty Lua 에서 Nginx 정규 표현 식 사용 하기
nginx. conf 파일 에서 잘못된 사용 방법:
# nginx.conf
? location /test {
? content_by_lua '
? local regex = "\d+" -- THIS IS WRONG!!
? local m = ngx.re.match("hello, 1234", regex)
? if m then ngx.say(m[0]) else ngx.say("not matched!") end
? ';
? }
# evaluates to "not matched!"
ngix. conf 파일 의 올 바른 사용 방법 은 \ \ \ 를 기억 해 야 의 미 를 바 꿀 수 있 습 니 다.
# nginx.conf
location /test {
content_by_lua '
local regex = "\\\\d+"
local m = ngx.re.match("hello, 1234", regex)
if m then ngx.say(m[0]) else ngx.say("not matched!") end
';
}
# evaluates to "1234"
Lua 특유 의 [정규] 정의 부 호 를 사용 할 수 있 습 니 다.
# nginx.conf
location /test {
content_by_lua '
local regex = [[\\d+]]
local m = ngx.re.match("hello, 1234", regex)
if m then ngx.say(m[0]) else ngx.say("not matched!") end
';
}
# evaluates to "1234"
이 거 는 자기가 번역 을 했 어 요.
Here,
[[\\d+]]
is stripped down to [[\d+]]
by the Nginx config file parser and this is processed correctly. Note that a longer from of the long bracket,
[=[...]=]
, may be required if the regex pattern contains [...]
sequences. The [=[...]=]
form may be used as the default form if desired. # nginx.conf
location /test {
content_by_lua '
local regex = [=[[0-9]+]=]
local m = ngx.re.match("hello, 1234", regex)
if m then ngx.say(m[0]) else ngx.say("not matched!") end
';
}
# evaluates to "1234"
하면, 만약, 만약...by_lua_file 'test.lua' \\\\d + 를 \ \ d + 로 간략화 합 니 다.
-- test.lua
local regex = "\\d+"
local m = ngx.re.match("hello, 1234", regex)
if m then ngx.say(m[0]) else ngx.say("not matched!") end
-- evaluates to "1234"
하면, 만약, 만약...by_lua_file 'test.lua' [[\ \ d +] 를 간략화 하여 [[\d+]]
-- test.lua
local regex = [[\d+]]
local m = ngx.re.match("hello, 1234", regex)
if m then ngx.say(m[0]) else ngx.say("not matched!") end
-- evaluates to "1234"
원본:http://wiki.nginx.org/HttpLuaModule
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.