有两种格式的数据都在同一个文件下,格式如下
{1234}
[{4567}]
怎么通过Java去掉这些数据的前后字符,只保留1234和4567
正则表达,两种处理思路:
1、去除所有非数字字符,使用正则表达式:\D
2、提取数字字符,使用正则表达式:\d
3、若字符中间有非数字字符,可能考虑用两边去除非数字字符的方式,从两头遍历检查。(推荐)
测试代码如下:
String str = "[{45dfd,<>67}]"; Pattern pattern = Pattern.compile("^\\D+|\\D+$"); Matcher matcher = pattern.matcher(str); str = matcher.replaceAll(""); System.out.println(str);
注:可以根据你的需求定制,是指定匹配“[]”“{}”或者其他字符,或者预定义字符集,总之能够避免匹配中间字符
楼上说的很对~
给你写个小例子:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { private static final Pattern DIGITS_PATTERN = Pattern.compile("\\d+"); public static String getDigits(String str) { Matcher matcher = DIGITS_PATTERN.matcher(str); if (matcher.find()) { return matcher.group(); } return ""; } public static void main(String[] args) throws Exception { String str1 = "{1234}"; String str2 = "[{4567}]"; System.out.println(getDigits(str1)); System.out.println(getDigits(str2)); } }
只有数字的话,用正则提取