正则表达式的表达式包含多余的字符
问题描述:
希望这是真的很简单的问题,但我下面的数据字符串见下图:正则表达式的表达式包含多余的字符
*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*{(.*?)}
如何删除额外的开始字符?
干杯
答
看起来你要使用[^\\*]
在排除潜在的匹配前面带有“*”的比赛。它可以工作,但它包含匹配中的前缀。您可以使用negative lookbehind((?<!\*)
)完成相同的操作,但不在匹配中包含前缀。
(?<![*\\])frac\s{(.*?)}\s*{(.*?)}
答
最简单的方法是不要在表达式的开头添加额外位。你真的需要字符串的开始吗?它看起来不像我。所以只需使用: frac\s{(.*?)}\s*{(.*?)}
答
您可以删除第一个[^\\*]
。该表达式应该只是:
frac\s{(.*?)}\s*{(.*?)}
+0
我相信'[^ \\ *]'是一种不符合第一个'压裂'的尝试。 – JDB 2013-02-18 20:31:53
在压裂之前删除匹配的东西? – 2013-02-18 20:18:41