正则表达式在一个数字中有一个开括号和一个闭括号

Regex with one open and close bracket within an number

这几天我一直坐着和正则表达式战斗,但没有成功

我的第一个表情,我想要的:

允许的示例:

我的第二个表达式类似,但只是括号前后的数字而不是文本

不匹配:

这就是我所做的,但没有用,因为我不知道如何处理准时括号:

^.*\{?[0-9]*\}.*$

从其他答案中我还发现,这看起来不错,但我需要它作为数字:

^[^\{\}]*\{[^\{\}]*\}[^\{\}]*$

我想稍后使用括号中的数字并替换为其他一些值,如果重要的话,只是为了一些额外的信息。

希望有人能帮助我。提前致谢!

这就是你想要的:

^([^\]\n]*\[\d+\])?[^[\n]*$

Live example

更新: 对于数字:

^[\d ]*(\[\d+\])?[\d ]*$

解释:

  • ^ 行首
  • [^...] 负数字符集 --> [^\]] 除了 ] 之外的任何字符
    • * Class/Character 集合的零个或多个长度
  • \d 0-9
    • +Class/Character集合的一个或多个长度
  • (...)?0或1组
  • $行尾

注意:这些正则表达式可以return空匹配。

感谢@MMMahdy-PAPION!他改进了答案。