2011-05-05 1 views
3

에서 $/:/( ()) 나는 다음과 같은 자바 스크립트 정규 표현식에 해당하는 정규 표현식을 작성하려는 JS

/^(\(\))?$/ 을 "()"및 ""와 (와) 일치합니다.

루아에서 이에 상응하는 표현을 찾을 수 없습니다. 내가 가진 문제는 "?"뒤에 여러 문자를 만들 수 있다는 것입니다.

^%(%)?$는 "("밖으로 일치하는 데 사용할 수 있습니다

^%(%)$ 밖으로 일치 할 수 있습니다 예를 들어

, "()" "()"

하지만 ^(%(%))?$이 작동하지 않습니다

답변

3

루아의 패턴 언어 인 ? 수정자는 하나의 문자 클래스에만 적용됩니다. 패턴/정규식을 사용하는 대신 간단한 방법을 사용하십시오. foo == '()' or foo == ''? 아니면 실제 문제가 좀 더 복잡합니까? 그렇다면 실제로하고 싶은 것을 말해주십시오.

2

LPeg (Lua의 패턴 일치 라이브러리)를 사용할 수 있습니다.

local lpeg = require "lpeg" 

-- this pattern is equivalent to regex: /^(\(\))?$/ 
-- which matches an empty string or open-close parens 
local p = lpeg.P("()")^-1 * -1 

-- p:match() returns the index of the first character 
-- after the match (or nil if no match) 
print(p:match("()")) 
관련 문제