java - Java Regex - 在字符串中查找数值
问题描述
在下面的两个字符串(天气)中,我需要使用正则表达式找到第一个"xxxFT"
值,"BKN"
然后只提取数值:xxxx
2400
在第一个字符串中,最终值将700
在第二个中。
之间可能是一个附加词,这取决于"BKN"
。"xxxxFT"
即:"BKN CB 2400FT"
或"BKN 700FT"
String str1 = "4000M WX MODTSRA CLD FEW 600FT BKN CB 2400FT BKN CB 2900FT T 21 DP 18 QNH 1010.7HPA MET QFE 1004.1HPA TREND TEMPO MOD TSRA"
String str2 = "1500M CLD BKN 700FT BKN 4600FT T 16 DP 17 QNH 1014.7HPA MET QFE 1004.1HPA TREND TEMPO MOD TSRA"
我可以为此使用哪种正则表达式模式?
解决方案
更新: 如果您想使用单个正则表达式,请使用以下代码:
Pattern pattern = Pattern.compile("BKN.*?\\s+(\\d+)FT");
Matcher matcher = pattern.matcher(String1);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
旧的首先你需要从 BKN 开始获取 SubString 所以
int startIndex = String1.indexOf("BKN");
String str = String1.subString(startIndex);
然后你需要在 BKN 和 FT 之间减少它,这样才能得到 FT 的索引
startIndex = 0;
int endIndex = str.indexOf("FT")+1;
str = str.subString(startIndex,endIndex);
最后你可以使用这个正则表达式并从字符串中删除非数字字符
str = str.replaceAll("\\D+","");
String1 的输出:2400 String2 的输出:700
推荐阅读
- mysql - hive 分区和未分区表运行时和 cpu 时间
- assembly - 创建字节数组
- elixir - 将外部字符串转换为原子
- android - 单选按钮以编程方式设置边距和对齐
- javascript - 将 JSON 对象转换为单个变量
- visual-studio-code - 如何解决 Windows 上的 phpcs 和 vscode 问题
- python-3.x - 无法获取收件箱下的文件夹
- node.js - Fetch 从服务器检索序列化对象。为什么在 fetch 内部检查时它已经反序列化了?
- select - 错误消息:在 hive2.3.3 中使用嵌套选择时“当前上下文不支持 TOK_ALLCOLREF”
- python - 为什么我可以在我的 python 3.6 shell 中访问 gdal 而不是我的 django shell