others - 用正规表达式提取方括号之间的文本

简单的正规表达式问题,我有以下格式的字符串:


this is a [sample] string with [some] special words. [another one]

在方括号中提取单词的正则表达式是什么?


sample
some
another one

时间:

 
[(.*?)]

 

说明:

  • [[是一个元字符,如果你想要对它进行匹配,则需要转义,
  • (.*?) :以非贪婪方式匹配所有内容并捕获,
  • ]]是一个元字符,如果你想要对它进行匹配,则需要转义。

这应该可以正常工作:

 
[([^]]+)]

 

括号是否可以嵌套?

如果没有:[([^]]+)]匹配一个项,包括方括号,反向引用1将包含要匹配的项。

 
(?<=[)[^]]+(?=])

 

这将只与括号内的项匹配。

 
(?<=[).+?(?=])

 

将捕获不带括号的内容

对于嵌套括号,下面的正规表达式应该工作:


(?<=[)[^[.]+?(?=])

此代码将提取方括号和括号之间的内容


(?:(?<=().+?(?=))|(?<=[).+?(?=]))

(?: non capturing group
(?<=().+?(?=)) positive lookbehind and lookahead to extract the text between parentheses
| or
(?<=[).+?(?=]) positive lookbehind and lookahead to extract the text between square brackets

 
([[][a-z s]+[]])

 

上面的解释应该能给出以下解释

  • 方括号内的字符 [] 定义字符类,表示模式应至少匹配在方括号中提到的一个 charcater

  • s 指定一个空格

  • + 表示前面提到过的字符之一+ 。

下面是一个python例子:


import re 
str ="Pagination.go('formPagination_bottom',2,'Page',true,'1',null,'2013')"
re.search('(?<=().*?(?=))', str).group()
"'formPagination_bottom',2,'Page',true,'1',null,'2013'"

...