正则表达式包括额外的字符

时间:2013-02-18 20:16:58

标签: c# regex

希望这是一个非常简单的问题,但我有以下数据字段见下文:

*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*{(.*?)}

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

干杯

3 个答案:

答案 0 :(得分:3)

您似乎正在尝试使用[^\\*]来排除潜在匹配前缀为“*”的匹配项。它有效,但它包含匹配中的前缀。您可以使用negative lookbehind(?<!\*))来完成相同的操作,而不会在匹配中包含前缀。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

frac\s{(.*?)}\s*{(.*?)}