-1

我有一系列项目,如下所示

[1;233,2;345,3;656]

我正在寻找正则表达式来保存我的数组,如下所示

[233,345,656]

所以在分号前丢弃值

4

5 回答 5

3

[0-9]+;也许尝试用空字符串替换正则表达式。如果只有一个数字,则不需要 +。在单个数字的情况下,找到一个分号,删除它和前面的字符也可能更容易。

于 2013-05-08T12:42:02.133 回答
0
replaceAll("\d;" ,"")

如果您的位数不固定为一位并且可以更改,您可以使用\d+

于 2013-05-08T12:48:39.100 回答
0

那会是这样的:

;([^,;]+)$1

这意味着至少一个分号作为起始字符,然后是一个或多个既不是分号也不是逗号的字符。最后,它仅将分号右侧的部分标记为所需结果。

我不确定这是 Java 的语法,特别是。我更像是一个 .NET 人。但你可以从那里开始工作。

于 2013-05-08T12:48:47.313 回答
0

如果您的数组是用整数键入的,则正则表达式超出范围。您应该考虑创建一个新数组,其整数值优于 99(3 位整数)。

但是,如果您的数组包含字符串,这是您想要的正则表达式:

Pattern yourPattern = Pattern.compile("(?<=\\D)\\d{1,2}(?=\\D)"); 
// this will find 1 or 2 digit numbers preceded and followed by anything but a digit

编辑:对于正则表达式解决方案,我假设我们正在讨论数组的字符串表示。因此检查非数字字符。相反,如果您正在迭代一个字符串数组,那么您可能会使用Integer.valueOf("12")并将 if 与 int 值 99 进行比较。也就是说,如果您确定您的字符串将始终表示一个整数(否则处理一个 NumberFormatException)。

于 2013-05-08T13:02:27.837 回答
0

您可以将您的数组字符串拆分为,得到一对,然后拆分为; 找到数字。

PHP:

$string= "[1;233,2;345,3;656]";
$temp=explode(",", $string); //to get couples like 1;233
print_r($temp);
$result=array();
for($i=0; $i<count($temp);$i++){
    $temp1=explode(";", $temp[$i]);
    array_push($result,$temp1[1] );//take second value 233
}
print_r($result);

输出:$couple_array:Array ( [0] => [1;233 [1] => 2;345 [2] => 3;656] )

输出:$数组:Array ( [0] => 233 [1] => 345 [2] => 656] )

爪哇:

String str = "[1;233,2;345,3;656]";
String[] temp = str.split(",");//to get couples like 1;233
int size=temp.length;
String[] result=new String[size];
for(int i =0; i < size ; i++){
    String[] temp1=str.split(";");//take second value 233
    result[i]=temp1[1];
}
于 2013-05-08T12:51:17.713 回答