正则表达式提取方括号之间的文本
简单的正则表达式问题。 我有以下格式的字符串:
this is a [sample] string with [some] special words. [another one]
什么是正则表达式提取方括号内的单词,即。
sample some another one
注意:在我的用例中,括号不能嵌套。
您可以全局使用以下正则表达式:
\[(.*?)\]
说明:
-
\[
:[
是一个元字符,需要转义,如果你想从字面上匹配。 -
(.*?)
:以非贪婪的方式匹配所有内容并捕获它。 -
\]
:]
是一个元字符,需要转义,如果你想匹配它的字面意思。
这应该工作得很好:
\[([^]]+)\]
括号可以嵌套吗?
如果不是: \[([^]]+)\]
匹配一个项目,包括方括号。 反向引用\1
将包含要匹配的项目。 如果您的正则表达式支持环视,请使用
(?<=\[)[^]]+(?=\])
这只会匹配括号内的项目。
(?<=\[).+?(?=\])
将捕获无括号的内容
(?<= [) – 正面lookbehind为[
。*? – 非贪婪的内容匹配
(?=]) – 积极向前看[
编辑:嵌套括号下面的正则表达式应该工作:
(\[(?:\[??[^\[]*?\]))
(?<=\().*?(?=\))
按照上面给出的解释工作良好。 以下是一个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'"
此代码将提取方括号和括号之间的内容
(?:(?<=\().+?(?=\))|(?<=\[).+?(?=\])) (?: 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
([[][az \s]+[]])
以上应该给予以下解释
-
方括号[]中的字符定义字符类,这意味着模式应该匹配方括号内提到的至少一个字符
-
\ s指定一个空格
-
+表示前面提到的至少一个字符+。