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+)