正则表达式匹配包含(或不包含)空格的括号内的字符串
regex Match string inside brackets which includes (or not includes) spaces
如何使用正则表达式捕获字符串,即 a) 在圆括号内,包括括号,b) 包含 space(或者 不 在括号内包含一个 space) ,这样可以捕获 (test test), ( test), (test )
但不捕获
(test)
.
我发现了一个类似的问题,它使用表达式
\((?!\s)[^()]+(?<!\s)\)
但使用此 lookahead/lookbehind 规则仅查找附加到括号的 space。您如何修改它以查找括号内的每个 space?
提前致谢!
您可以使用 /\([^)]* [^)]*\)/
。这匹配 0 个或多个非右括号字符后跟 space 后跟 0 个或多个非右括号字符。所以它将匹配 "( )"
和 "( )"
但不匹配 "()"
.
const s = "() ( test) (test) (test ) ( ) ( ) ( test ) (t est)";
console.log([...s.matchAll(/\([^)]* [^)]*\)/g)]);
简单地 \([^()]+\)
匹配一对括号之间的所有内容。这包括 spaces,以及除(换行符或)括号之外的任何其他字符。
(假设正则表达式方言需要转义文字括号,加号匹配一次或多次重复。否定字符 class 是否匹配换行符也是特定于方言的。)
如果(正如您在评论中所说)您至少需要一个 space,那很容易添加。换句话说:匹配一个左括号字符,零个或多个非 space,非括号字符,一个 space,零个或多个非括号字符(space 也可以)直到右括号。
\([^ ()]* [^())*\)
如何使用正则表达式捕获字符串,即 a) 在圆括号内,包括括号,b) 包含 space(或者 不 在括号内包含一个 space) ,这样可以捕获 (test test), ( test), (test )
但不捕获
(test)
.
我发现了一个类似的问题
\((?!\s)[^()]+(?<!\s)\)
但使用此 lookahead/lookbehind 规则仅查找附加到括号的 space。您如何修改它以查找括号内的每个 space?
提前致谢!
您可以使用 /\([^)]* [^)]*\)/
。这匹配 0 个或多个非右括号字符后跟 space 后跟 0 个或多个非右括号字符。所以它将匹配 "( )"
和 "( )"
但不匹配 "()"
.
const s = "() ( test) (test) (test ) ( ) ( ) ( test ) (t est)";
console.log([...s.matchAll(/\([^)]* [^)]*\)/g)]);
简单地 \([^()]+\)
匹配一对括号之间的所有内容。这包括 spaces,以及除(换行符或)括号之外的任何其他字符。
(假设正则表达式方言需要转义文字括号,加号匹配一次或多次重复。否定字符 class 是否匹配换行符也是特定于方言的。)
如果(正如您在评论中所说)您至少需要一个 space,那很容易添加。换句话说:匹配一个左括号字符,零个或多个非 space,非括号字符,一个 space,零个或多个非括号字符(space 也可以)直到右括号。
\([^ ()]* [^())*\)