如何使用 Java 正则表达式将数字与可能位于方括号中的组进行匹配

问题描述 投票:0回答:1

我需要从这样的字符串中获取数字:

  • “前缀.[10].后缀
  • “前缀.10.后缀”

我的第一直觉是这样做:

\w+\.(?<number>\[\d+\])|(?<number>\d+)\.\w+

但这会失败并出现错误:“?子模式名称必须是唯一的”。

java regex-group
1个回答
0
投票

(\.\[*(.*)\]*\.)
这将与 .[10] 匹配。或 .10.

比赛将分为两个小组。第 1 组将是.[10]。第 2 组将为 10 您可以在第 2 组中获得所需的值。

\.
- 期待一个点

\[*
- 期望 0 或更多 [

(.*)
- 与任何角色匹配

\]*
- 预计 0 或更多 ]

\.
- 期待一个点

基本上 (.*) 该组将捕获 .[ 和 ] 之间的任何内容。其中 [ 和 ] 是可选的。您可以根据您的要求将此处的 [ 和 ] 替换为任何字符集。

例如是否可以用除数字之外的任何字符来代替 [ 和 ]

(\.[^0-9]*([0-9]+)[^0-9]*\.)
© www.soinside.com 2019 - 2024. All rights reserved.