我有这个正则表达式:
^(?'IF'[IF\s]{3})(?'CONDICTION'[\w\s\d+=/\.\*-><\(\)]+)(?'THEN'THEN)(?'TRUE'[\w\s\d+=/\.\*-><\(\)]*)(?'ELSE'[\s\w]ELSE[\s|\n])(?<FALSE>[\w\s\d.+\-*/]*)(?<ENDIF>([\s\nENDIF]{6}))
对于这个表达式:
IF 1 = 1 THEN 1 ELSE 3 ENDIF
工作正常,我有这个小组:
IF: IF
CONDICTION: 1 = 1
THEN: THEN
TRUE: 1
ELSE: ELSE
FALSE: 3
ENDIF: ENDIF
但如果我尝试这个表达式:
IF 1 = 1 THEN 1 ELSE IF 1 = 2 THEN 3 ELSE 2 ENDIF ENDIF
我有这个小组:
IF: IF
CONDICTION: 1 = 1 THEN 1 ELSE IF 1 = 2
THEN: THEN
TRUE: 3
ELSE: ELSE
FALSE: 2 ENDIF
ENDIF: ENDIF
但我想要这个:
IF: IF
CONDICTION: 1 = 1
THEN: THEN
TRUE: 1
ELSE: ELSE
FALSE: IF 1 = 2 THEN 3 ELSE 2 ENDIF
ENDIF: ENDIF
我需要匹配的正则表达式是什么?
答案 0 :(得分:0)
你似乎正走在正确的轨道上。您已经定义了语法,因此您需要对表达式进行标记,并根据语法对其进行解析。换句话说,您需要根据您的特定需求编写解析器。
一些有用的链接:
http://www.dreamincode.net/forums/topic/110782-c-beginner-parser-class-tutorial/
答案 1 :(得分:0)
我使用Irony
解决了我的问题我将在博客中解释详细信息并编辑此答案!