regex匹配包含(或不包含)空格的方括号内的字符串

如何使用正则表达式捕获字符串,即a)在圆括号内(包括括号),以及b)在括号内包含空格(或者包含空格) ,因此要捕获(test test),( test),(test )而不是 (test)

我发现了类似的问题here,它使用了表达式

\((?!\s)[^()]+(?<!\s)\)

,但是使用此先行/后备规则,仅查找括号中附加的空格。您如何修改它以查找括号内的每个空格?

提前谢谢!

wiselytao 回答:regex匹配包含(或不包含)空格的方括号内的字符串

您可以使用/\([^)]* [^)]*\)/。这匹配0个或多个非闭合括号字符,后跟一个空格,后跟0个或多个非闭合括号字符。因此它将匹配"( )""( )",但不匹配"()"

const s = "() ( test) (test) (test ) (    ) ( ) ( test ) (t est)";
console.log([...s.matchAll(/\([^)]* [^)]*\)/g)]);

,

\([^()]+\)匹配一对括号之间的所有内容。其中包括空格和(换行符或)括号以外的其他任何字符。

(假设需要转义原义字符的正则表达式方言,并且plus匹配一个或多个重复。否定的字符类是否与换行符也是特定于方言的。)

如果(如您在评论中所述)您需要至少一个空格,则很容易添加。改写:匹配一个左括号字符,零个或多个非空格,非括号字符,一个空格,零个或多个非括号字符(也可以有空格),直到右括号为止。

\([^ ()]* [^())*\)
本文链接:https://www.f2er.com/2770207.html

大家都在问