일반적으로 정규 표현식을 찾고 있습니다.Delphi RegEx 괄호 파서
이 정규 표현식은 괄호 문자와 매개 변수를 가져 오는 데 사용됩니다.
입력 :
...alotOfText...
DBINFO("Parameter1"|'FirstFunction(Parameter)'|Parameter3|SecondFunction("Parameter1"|Parameter2)")
...alotOfOtherText...
현재 정규식 : ()
이 작동하지만, 최대한 빨리 위의 언급 한 입력을 구문 분석을 필요로하는 단 하나 개의 세트 입력의
cRegex =
'DBINFO\('// Looking for DBINFO(
+ '(?:' // Recursion for following Pattern(s)
+ '[^\)]' // no "("
+ '|(?R))' // or Repeat the Recursion (am i right?) I don't really understand this line
+ '*\)' // Quantifier for recursion (?) with unlimited Chars and one ")" at the end.
;
일치 항목은 )
이 처음 나타날 때까지만 발생합니다.
그래서 여러 수준의 괄호가 서브 루틴을 사용해야한다고 연구했습니다. 그러나 나의 주요 정보원에서도 나는 나를 다시 궤를 같이하는 모범을 발견 할 수 없다. http://www.regular-expressions.info/subroutine.html
비고 :
이각 매개 변수와 함께 "또는 함께 빈 될 수있다 '(혼합)
출처 : 당신은 예를 들어 줄 경우
hRegEx := TRegEx.Create(cRegex), [roIgnoreCase, roMultiLine]);
hMatchCollection := hRegEx.Matches(aLayoutString);
for hMatch in hMatchCollection do
// Regarding the Regular Expression there should only be one Match in the Collection.
//Thats Subject to Change
begin
if hMatch.Success then
begin
Result := ParseParameter(hMatch.Value);
end;
end;
가 : 광산로에 대해 언급 해주십시오 . 나는 믿고 싶어 .. 아 배운다. :)
StackOverflow에 오신 것을 환영합니다. 내가 올바르게 당신을 이해한다면, 질문은 정규식 자체에 관한 것이며, 맨 아래에 델파이 코드 블록을 추가하는 것 외에는 델파이와 아무 상관이 없습니다. 귀하의 질문이 실제로 델파이에 관한 것이라면, 델파이 * 문제를 해결하려는 도움이 필요한 것이 무엇인지 명확하게하기 위해 [편집] 할 수 있습니까? –
예 신입생입니다. 사용되는 Reg Ex는 Delphi XE 버전입니다. (PCREG?) 저는 현재 버전 0.1을 어떻게 사용하고 있는지 보여주기 위해 소스를 추가했습니다. (표현식을 변경하면 전체 일치하는 그룹을 변경할 수 있기 때문에 ...) – Quelltextknecht
그런 다음 [편집]을 클릭하여 Delphi 태그를 제거하고 PCRE 태그로 바꿉니다. 작동하는 정규 표현식을 얻은 후에는이를 사용하는 Delphi 코드가 거의 동일합니다 (작동하지 않는 경우 해당 문제에 대한 새롭고 다른 질문 *을 갖게됩니다). –