使用Regex和Java查找第一个匹配项

新手

我希望能够找到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());
}

IDEONE演示

请注意,您可以使用可选的非捕获组摆脱备用组 (?:..)?

模式分解:

  • \d+ -1个以上的数字
  • (?:,\d+)? -0+个逗号序列,后跟1+个数字
  • \s* -0+空格符号
  • m\u00B2 -平方米

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NSPredicate仅查找第一个匹配项

RegEx:基于第一个两个字符查找匹配项

使用“ sed”仅替换第一个和最后一个匹配项

在1和0的字符串中查找0的第一个匹配项

如何转换for循环以查找Java流中的第一个匹配项?

如何仅使用.Net Regex.Replace替换第一个匹配项

使用awk打印字段的第一个和最后一个匹配项

使用Regex查找句子的第一个字母和符号

RegEx匹配关键字之前的第一个匹配项

在Multiindex数据框中查找每个索引的第一个匹配项

通过给定变量查找条件的第一个匹配项

在Pandas数据框中查找第一个匹配项

MySQL-查找第一个匹配项或通配符

告诉find函数查找第36行之后的第一个匹配项吗?

查找文件中第一个匹配项的快捷方式

分别在每个文件夹分支中查找第一个匹配项

查找第一个包含来自数组的匹配项

在Kotlin的嵌套列表中查找并返回第一个匹配项?

在列表列表中向后查找第一个匹配项

如何在多个文件中查找第一个匹配项

在条件的第一个匹配项上执行查找的公式

Bash脚本在URL之后查找字符串的第一个匹配项

如何仅替换 regex_search 的第一个找到的匹配项?

C#RegEx-仅获得字符串中的第一个匹配项

Ruby str.match(regex)返回仅包含第一个匹配项的MatchData

如何使此选择查找另一个表并找到第一个匹配项?

查找数组的第一个重复项

sed更改另一个匹配项的第一个匹配项

提取符合sed的第一个匹配项