所以我的任务是在字符串中仅选择负数。但是,这是一个大问题。我的字符串由不同的负号组成(有些表示负数,有些表示减法)。

我的想法是,如果减号前没有数字,则得到负数。
我的正则表达式模式:

(\d{0}-)?\d+


与我想像不一样的模式:

((?!\d)-)?\d+




我在这段文字上测试了这种模式:

-1 2 (33-44)


我的期望:-1 2 33 44

结果:-1 2 33 -44

如您所见,最后的减号用于减法,它并不表示负数。

最佳答案

您可以通过使用Negative Lookbehind?<!)并检查-前面是否有一个或多个数字来获得预期的结果:

(?<!\d+)-?\d+


Example

为了只匹配字符串中的负数,您需要使-成为必需:

(?<!\d)-\d+


Example

关于c# - C#正则表达式仅在字符串中获取负数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53676392/

10-13 04:59