我有一些项目如下
[1;233,2;345,3;656]
正在寻找正则表达式以保存我的数组,如下所示
[233,345,656]
所以它会丢弃半冒号之前的值
答案 0 :(得分:3)
也许尝试使用空字符串替换[0-9]+;
上的正则表达式。如果只有一个数字,则不需要+。在单个数字的情况下,也可以更容易找到分号,删除它和前面的字符。
答案 1 :(得分:0)
replaceAll("\d;" ,"")
如果您的位数未固定为1且可以更改,则可以使用\d+
答案 2 :(得分:0)
这就像是:
;([^,;]+)$1
这意味着至少有一个分号作为起始字符,然后是一个或多个既不是分号也不是逗号的字符。最后,它只标记分号右边的部分作为期望的结果。
我不确定这是Java的语法,特别是。我更像是一个.NET家伙。但你可以从那里开始工作。
答案 3 :(得分: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: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];
}
答案 4 :(得分: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
编辑:对于正则表达式解决方案,我假设我们正在讨论数组的字符串表示。因此检查非数字字符。
如果你是迭代一个String数组,那么你可以使用Integer.valueOf("12")
并将if比较为int值99.也就是说,如果你是肯定的,你的字符串总是表示一个整数(否则处理一个NumberFormatException) )。