嗨,我不太了解正则表达式,我试图从字符串中获取数字" glm = 4563125 @",有人可以帮助我。数字的位数可以变化,因此它不具体的数字位数。感谢。
答案 0 :(得分:2)
使用Matcher类匹配并提取这些分隔符之间的子字符串。
String s = "glm=4563125@ abcd=efgh @pref= @ alt=?@Altype=wxyz! barglm=1234@";
Pattern p = Pattern.compile("\\bglm=(\\d+)@");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group(1)); //=> "4563125"
}
注意:使用单词边界\b
断言,一方有单词字符,另一方面没有或在字符串的开头或结尾它以单词字符开头或结尾。
答案 1 :(得分:0)
根据评论,提取“glm =”和“@”之间的数字
public String extractNumber(String input) {
Pattern p = Pattern.compile("glm=(\\d+)[@]?");
Matcher m = p.matcher(input);
if (m.find()) return m.group(1);
else return null;
}
阐释:
正则表达式glm =(\ d +)[@]?在数字周围插入一个捕获组,并搜索“glm =”和“@”之间的数字,问号使“@”字符可选(注意:你的评论非常误导,这是可选的,所以如果你不喜欢不想要这个,只需删除问号)
Pattern和Matcher用于在输入字符串中搜索匹配的regex表达式,return语句返回找到的第一个捕获组。
我希望这就是你要找的东西。
答案 2 :(得分:0)
您可以使用以下正则表达式:
(\d+)
String input = "glm=4563125@";
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(input);
if (m.find()) {
System.out.println(m.group(1)); // Displays 4563125
}