0

希望这真的是一个简单的问题,但我有以下数据串,见下文:

*frac {7frac {1} {2} + 8} {frac {3} {4} +3} = 4

想要返回以下

frac {1} {2}
frac {3} {4}

但我得到以下内容:

7frac {1} {2}    
{frac {3} {4}

我现在的表达是:

[^\\*]frac\s{(.*?)}\s*{(.*?)}

如何删除额外的起始字符?

干杯

4

3 回答 3

3

看起来您正在尝试[^\\*]排除潜在匹配以“*”为前缀的匹配。它可以工作,但它在匹配中包含前缀。您可以使用否定的lookbehind ( (?<!\*)) 来完成相同的事情,而无需在匹配中包含前缀。

(?<![*\\])frac\s{(.*?)}\s*{(.*?)}
于 2013-02-18T20:18:28.017 回答
0

最简单的方法是在表达式的开头不包含额外的位。你真的需要字符串的开头吗?在我看来不像。所以只需使用: frac\s{(.*?)}\s*{(.*?)}

于 2013-02-18T20:18:55.990 回答
0

您可以删除第一个[^\\*]. 表达式应该只有:

frac\s{(.*?)}\s*{(.*?)}
于 2013-02-18T20:22:12.553 回答