C# 如何消除后跟特定字符串的数字

C# 如何消除后跟特定字符串的数字,c#,regex,C#,Regex,我有一个很长的正则表达式模式。这只是其中的一部分: string pattern = @"((?<!top=)(?<![A-Za-z])\d)+"; 它匹配2019、03、25、100、10和0 我想从匹配结果中删除最后一个0。换句话说,所有后跟top=的数字都不应该匹配 我的解决方案只有在top=后面有一个数字时才有效。如何才能达到预期的结果 更新:不幸的是,建议的解决方案不适合整个模式。我试图使我的例子简单化,但这似乎是不可能做到的 所以我的整个正则表达式模式是: strin

我有一个很长的正则表达式模式。这只是其中的一部分:

string pattern = @"((?<!top=)(?<![A-Za-z])\d)+";
它匹配2019、03、25、100、10和0

我想从匹配结果中删除最后一个
0
。换句话说,所有后跟
top=
的数字都不应该匹配

我的解决方案只有在
top=
后面有一个数字时才有效。如何才能达到预期的结果

更新:不幸的是,建议的解决方案不适合整个模式。我试图使我的例子简单化,但这似乎是不可能做到的

所以我的整个正则表达式模式是:

string pattern = @"((?<!top=)(?<![A-Za-z])\d|-|T\d+|:|\.|\+|(?<=\d)Z)+|\bfalse\b|\btrue\b|\bnull\b|'[^']+'|\(['\d][^\)]+\)";

string pattern=@”((?您可以将正则表达式更改为此处,我使用
\b
拒绝数字的部分匹配

(?<!top=)(?<![A-Za-z])\b\d+
(?


您编写正则表达式的方式
((?将通过对单个应用条件,然后计算一个或多个这样的字符来工作,这些字符不允许在正则表达式中使用
\b
,因此我将其更改为删除外括号并使用
\b\d+
。希望这将为您提供所有所需的匹配。如果您遇到任何问题,请告诉我。

st在正则表达式中添加
0-9
,用于强制数字前面不加其他数字:

((?<!top=)(?<![A-Za-z0-9])\d+)
(?
请参见演示

但你也可以只使用单词边界:

(?<!top=)\b(\d+)
(?

请参阅演示。

注意
\b
限制性更强,因为
\b\d
将永远不会匹配
\u
后面的数字。
(?<!top=)\b(\d+)