我希望能够找到m²的第一个匹配项,然后找到它前面的数字,可以是整数或十进制数。例如
“一些文字” 38m²“一些文字”,
“一些文字” 48,8m²“一些文字”,
“一些文字” 48平方米“一些文字”等。
到目前为止,我有:
\d\d,\d\s*(\m\u00B2)|\d\d\s*(\m\u00B2)
现在可以找到所有出现的位置,尽管我想可以用修复它findFirst()
。有什么想法如何改善正则表达式部分吗?
要获得第一个匹配项,您只需要Matcher#find()
在一个if
块内使用:
String rx = "\\d+(?:,\\d+)?\\s*m\\u00B2";
Pattern p = Pattern.compile(rx);
Matcher matcher = p.matcher("E.g. : 4668,68 m² some text, some text 48 m² etc");
if (matcher.find()){
System.out.println(matcher.group());
}
请注意,您可以使用可选的非捕获组摆脱备用组 (?:..)?
模式分解:
\d+
-1个以上的数字(?:,\d+)?
-0+个逗号序列,后跟1+个数字\s*
-0+空格符号m\u00B2
-平方米本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句