所以我的任务是在字符串中仅选择负数。但是,这是一个大问题。我的字符串由不同的负号组成(有些表示负数,有些表示减法)。
我的想法是得到负数,如果负数之前没有更多的数字。 我的正则表达式模式:
(\d{0}-)?\d+
与我想像的方式不一样的方式:
((?!\d)-)?\d+
我在这段文字上测试了这种模式:
-1 2 (33-44)
我的期望: -1 2 33 44
结果: -1 2 33 -44
如您所见,最后的减号用于减法,它并不表示负数。
答案 0 :(得分:1)
通过使用Negative Lookbehind(import static android.content.Context.MODE_PRIVATE;
),检查?<!
前面是否有一个或多个数字,您可以得到预期的结果:
-
为了只匹配字符串中的负数,您需要使(?<!\d+)-?\d+
成为必需:
-