简单的正则表达式问题。我有一个字符串的以下格式:

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

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

sample
some
another one

注意:在我的用例中,括号不能嵌套。


当前回答

你可以全局使用以下正则表达式:

\[(.*?)\]

解释:

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

其他回答

这应该是正确的:

\[([^]]+)\]

如果你想要填充方括号a-z之间的小字母

(\[[a-z]*\])

如果你想要小写字母a-zA-Z

(\[[a-zA-Z]*\]) 

如果你想要小写字母和数字字母a-zA-Z0-9

(\[[a-zA-Z0-9]*\]) 

如果你想要所有在方括号之间的东西

如果你想要文字,数字和符号

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

将捕获没有括号的内容

(?<=\[) -[的正向回溯 . * ?-非贪婪匹配的内容 (?=\]) -正向预测]

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

(\[(?:\[??[^\[]*?\]))

括号可以嵌套吗?

如果不是:\[([^]]+)\]匹配一个项目,包括方括号。反向引用\1将包含要匹配的项。如果你的正则表达式口味支持搜索,请使用

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

这将只匹配括号内的项。

你可以全局使用以下正则表达式:

\[(.*?)\]

解释:

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