如何使用正则表达式捕获字符串,即a)在圆括号内(包括括号),以及b)在括号内包含空格(或者不包含空格) ,因此要捕获(test test),( test),(test )
而不是
(test)
。
我发现了类似的问题here,它使用了表达式
\((?!\s)[^()]+(?<!\s)\)
,但是使用此先行/后备规则,仅查找括号中附加的空格。您如何修改它以查找括号内的每个空格?
提前谢谢!
您可以使用/\([^)]* [^)]*\)/
。这匹配0个或多个非闭合括号字符,后跟一个空格,后跟0个或多个非闭合括号字符。因此它将匹配"( )"
和"( )"
,但不匹配"()"
。
const s = "() ( test) (test) (test ) ( ) ( ) ( test ) (t est)";
console.log([...s.matchAll(/\([^)]* [^)]*\)/g)]);
,
仅\([^()]+\)
匹配一对括号之间的所有内容。其中包括空格和(换行符或)括号以外的其他任何字符。
(假设需要转义原义字符的正则表达式方言,并且plus匹配一个或多个重复。否定的字符类是否与换行符也是特定于方言的。)
如果(如您在评论中所述)您需要至少一个空格,则很容易添加。改写:匹配一个左括号字符,零个或多个非空格,非括号字符,一个空格,零个或多个非括号字符(也可以有空格),直到右括号为止。
\([^ ()]* [^())*\)