我希望能够找到第一次出现的m²,然后在它前面的数字,可以是整数或十进制数. 例如
"一些文字"38m²"一些文字",
"一些文字"48,8平方米"一些文字",
"一些文字"48m²"一些文字"等.
到目前为止我所拥有的是:
\d\d,\d\s*(\m\u00B2)|\d\d\s*(\m\u00B2)
Run Code Online (Sandbox Code Playgroud)
这个现在找到所有出现,虽然我想它可以修复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());
}
Run Code Online (Sandbox Code Playgroud)
请注意,您可以使用可选的非捕获组摆脱备用组 (?:..)?
模式细分:
\d+ -1个以上的数字(?:,\d+)? -0+个逗号序列,后跟1+个数字\s* -0+空格符号m\u00B2 -平方米| 归档时间: |
|
| 查看次数: |
6811 次 |
| 最近记录: |