C# 正则表达式包含额外字符
希望这是一个非常简单的问题,但我有以下数据字符串,请参见以下内容:C# 正则表达式包含额外字符,c#,regex,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*{(.*?)} 如何删除额外的起始字符 干杯看起来您正试图使用[^\\*]排除潜
*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*{(.*?)}
如何删除额外的起始字符
干杯看起来您正试图使用
[^\\*]
排除潜在匹配前缀为“*”的匹配。它可以工作,但在匹配中包含前缀。您可以使用((?)来完成相同的任务,而无需在匹配中包含前缀
(?<![*\\])frac\s{(.*?)}\s*{(.*?)}
(?看起来您正试图使用[^\\*]
排除可能匹配的前缀为“*”的匹配项。它可以工作,但在匹配项中包含前缀。您可以使用((?)完成相同的操作,而不必在匹配项中包含前缀
(?<![*\\])frac\s{(.*?)}\s*{(.*?)}
(?最简单的方法是不要在表达式的开头包含额外的位。您真的需要字符串的开头吗?我觉得它不像。所以只需使用:
frac\s{(.*)}\s*{(.*)}
最简单的方法是不要在表达式的开头包含额外的位。您真的需要字符串的开头吗?我觉得它不像。所以只需使用:
frac\s{(.*?}\s*{(.*?}
您只需删除第一个[^\\*]
。表达式应仅为:
frac\s{(.*?)}\s*{(.*?)}
您只需删除第一个[^\\*]
。表达式应仅为:
frac\s{(.*?)}\s*{(.*?)}
在压裂前移除匹配的内容?在压裂前移除匹配的内容?我相信[^\\*]
是试图与第一个“压裂”不匹配。我相信[^\\*]
是试图与第一个“压裂”不匹配。