Regex 正则表达式中的方括号问题

Regex 正则表达式中的方括号问题,regex,Regex,我的正则表达式有问题。我基本上想删除除括号以外的所有内容,包括0,1,2,3,4,5,6,7,8,9,+,-,*/ 例如 (9*[3*{[(3+3)/5]*7}]) # should give the answer ([{[()]}]) 我现在的正则表达式是 [0123456789+-\\*/] # and it gives the answer ({()]}]) 这给了我正确的答案,除了[与正则表达式匹配,我也不想要它。但是]不匹配,所以我感到困惑。在注释中提供了最简单的解决方案 另一种解

我的正则表达式有问题。我基本上想删除除括号以外的所有内容,包括0,1,2,3,4,5,6,7,8,9,+,-,*/

例如

(9*[3*{[(3+3)/5]*7}]) # should give the answer ([{[()]}])
我现在的正则表达式是

[0123456789+-\\*/] # and it gives the answer ({()]}])

这给了我正确的答案,除了
[
与正则表达式匹配,我也不想要它。但是
]
不匹配,所以我感到困惑。

在注释中提供了最简单的解决方案

另一种解决方案是将
-
字符移动到正则表达式的开头或结尾,因为在当前位置被视为范围字符,就像
a-Za-z

[0123456789+\\*/-]

中将posix表达式用于“任何非括号”:

并将其替换为空白

  • \p{Ps}
    \p{Open\u标点符号}
    :任何类型的开头括号
  • \p{Pe}
    \p{Close\u标点符号}
    :任何类型的结束括号

“除括号外的所有字符”,这意味着您要使用负数字符类。
-
也可以是字符类开头的字符。
[0123456789+\\*/-]
[^\p{Ps}\p{Pe}]