-2

我想使用正则表达式来解析这样的序列......

ifelseifelseififif

每个 else 都需要 if 但不是每个 if 都需要 else。我打算使用这个表达式

((if)*+(ifelse)*)*

但我不知道如何将其转换为我可以在 java 中使用的格式。有人可以告诉我并为我分解吗?

4

2 回答 2

2

你可能想要:((if)*|(ifelse)*)*. 意思是“|或”。

但是,目前尚不清楚您希望通过此实现什么。您的输入似乎模棱两可。它可能是

if {
} else {
}
if {
} else {
}
if {
}
if {
}
if{
}

或者它可能是

if {
} else {
    if {
    } else {
    }
}
if {
}
if {
}
if {
}

或许多其他变体。

于 2013-05-03T05:40:32.700 回答
1

在正则表达式逻辑中,我们要匹配:

(ifif
|OR
ifelse)ifelse
*那个记号,0次或多次。

(if|ifelse)*

这将匹配 0 个或多个 if/elseifs。

如果您需要它从头到尾填充整个字符串,例如没有部分匹配,请将 ^ 放在它之前和 $ 之后:

^(if|ifelse)*$

请阅读http://www.regular-expressions.info/reference.html以了解正则表达式语法的介绍(例如,+不是您认为的正则表达式),并使用http://www.regexpal.com在浏览器中快速测试您的正则表达式。

于 2013-05-03T05:45:59.900 回答