Java 正则表达式模式来匹配字符串中的正负数值

Java 正则表达式模式来匹配字符串中的正负数值,java,regex,pattern-matching,negative-number,Java,Regex,Pattern Matching,Negative Number,我有模式/匹配器行,可以像这样转换输入字符串: 1 3 Hi [2 1 4] [0] => "1" [1] => "3" [2] => "Hi" [3] => "2 1 4" 进入如下数组: 1 3 Hi [2 1 4] [0] => "1" [1] => "3" [2] => "Hi" [3] => "2 1 4" 这就是代码: String input = sc.nextLine(); Pattern p = Pattern.comp

我有模式/匹配器行,可以像这样转换输入字符串:

1 3 Hi [2 1 4]
[0] => "1"
[1] => "3"
[2] => "Hi"
[3] => "2 1 4"
进入如下数组:

1 3 Hi [2 1 4]
[0] => "1"
[1] => "3"
[2] => "Hi"
[3] => "2 1 4"
这就是代码:

String input = sc.nextLine();

Pattern p = Pattern.compile("(?<=\\[)[^\\]]+|\\w+");
Matcher m = p.matcher(input);
List<String> cIn = new ArrayList<String>();
while(m.find()) cIn.add(m.group());
要将该字符串值转换为整数,这实际上是我所需要的

你能想出一种方法让我把
-
字符和数字字符放在一起吗?然后我会检查是否有
-
字符来转换数字并将其乘以
-1
。(如果有更好的办法,我很高兴听到)


像往常一样,请原谅我讲英语。

您完全可以使用正则表达式来捕获负数,但这取决于您要剔除的内容

"(?<=\\[)[^\\]]+|[-\\w]+"

(?您可以在正则表达式中使用可选的
-

Pattern p = Pattern.compile("(?<=\\[)[^\\]]+|-?\\w+");

Pattern p=Pattern.compile((?)方法如下:
(?非常奇特的正则表达式,但是用更少的技巧捕获您要做的事情怎么样

(?:\[(?:\s*[-]?\d+\s*)*\]|(?:[-]?\d+|\w+))

+1,无需为你的英语道歉。这很好。:-)你能在空格上拆分并正常解析吗?为什么要使用正则表达式?@DaveNewton他想捕获
[]
中的序列作为标记,即使它们包含空格。(但我也喜欢不使用正则表达式的方法!)@cheeken我的意思是在组被捕获之后。就个人而言,这看起来更像是一个实际解析器的工作,而不是正则表达式,尽管如果这是一个复杂的事情,也许没什么关系。很难回答这个问题-你真的应该提供一个简单的描述,说明你试图匹配这个正则表达式的全部效果,以及一些不匹配的边缘情况。嗯,这比我想象的要容易。我试着在\\w+(\\w+\-)后面加上“-”字符但这并不管用。我只是想,因为我得到了一个字符串,所以我无法将数字评估为正或负。我想我只需要在网上提问之前再尝试一下,吸取教训。非常感谢大家。
(?:\[(?:\s*[-]?\d+\s*)*\]|(?:[-]?\d+|\w+))