简单的正则表达式问题。 我有如下格式的字符串: 正则表达式
this is a [sample] string with [some] special words. [another one]
提取方括号内单词的正则表达式是什么,即 this
sample some another one
注意:在个人用例中,方括号不能嵌套。 spa
这样应该能够了: code
\[([^]]+)\]
括号能够嵌套吗? ci
不然: \\[([^]]+)\\]
匹配一项,包括方括号。 向后引用\\1
将包含要匹配的项目。 若是您的正则表达式样式支持环视,请使用 字符串
(?<=\[)[^]]+(?=\])
这只会匹配括号内的项目。 string
您能够全局使用如下正则表达式: it
\[(.*?)\]
说明: 引用
\\[
: [
是一个元字符,若是要按字面值进行匹配,则须要转义。 (.*?)
:以非贪婪的方式匹配全部内容并捕获它。 \\]
: ]
是一个元字符,若是要按字面值进行匹配,则须要转义。 (?<=\[).+?(?=\])
将捕获不带括号的内容 项目
(?<=\\[)
-对[
.*?
-内容的非贪婪匹配
(?=\\])
-正向前看]
编辑:对于嵌套括号下面的正则表达式应该工做:
(\[(?:\[??[^\[]*?\]))
此代码将提取方括号和括号之间的内容
(?:(?<=\().+?(?=\))|(?<=\[).+?(?=\])) (?: 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