正则表达式提取方括号内的文本
简单的正则表达式问题。我有以下格式的字符串:正则表达式提取方括号内的文本
this is a [sample] string with [some] special words. [another one]
什么是提取方括号内的单词的正则表达式,即。
sample
some
another one
注意:在我的用例中,括号不能嵌套。
您可以使用以下正则表达式全球:
\[(.*?)\]
说明:
-
\[
:[
是元字符,需要进行转义,如果你想从字面上匹配。 -
(.*?)
:以非贪婪的方式匹配所有内容并捕获它。 -
\]
:]
是一个元字符,如果你想直接匹配,需要转义。
能括号嵌套?
如果不是:\[([^]]+)\]
匹配一个项目,包括方括号。反向引用\1
将包含要匹配的项目。如果您的正则表达式支持环视,请使用
(?<=\[)[^]]+(?=\])
这只会匹配括号内的项目。
这只标志第一次出现 – 2017-12-07 13:28:54
@KunalMukherjee:不,正则表达式可以匹配任意次数。但是需要明确地告诉一些正则表达式重复应用正则表达式(例如,通过在JavaScript中使用'/ g'标志)。 – 2017-12-08 15:30:23
([[][a-z \s]+[]])
以上应该工作给出下面的解释方括号[]内
字符定义characte类,这意味着图案应当匹配方括号内提及ATLEAST一个charcater
\ s指定空间
+意味着至少一个之前提到的角色+。
在敏感的情况下,'A-Z'应该加上样式:'([[] [a-zA-Z \ s] + []])';我认为这是一个好方法,而'\'用正则表达式模式定义字符串标记(“和”)并通过“或'用法中的反斜杠处理混合新手! – MohaMad 2017-03-01 10:46:36
(?<=\[).+?(?=\])
将捕获没有括号
内容(< =?) - 正回顾后发的[
*? - 内容的非贪婪匹配
(?=]) - 为[
EDIT阳性先行:用于嵌套括号内的下面的正则表达式应该工作:
(\[(?:\[??[^\[]*?\]))
@igaurav我检查过它,它的工作原理。但是,在不支持Javascript之类的向后看的环境中,它不起作用。也许这是你的情况? – 2015-02-11 06:21:28
亚当,你的嵌套括号解决方案失败时,有一个字符串与一个'.'在其中... – patrick 2015-12-07 02:54:26
此代码将提取方括号之间的内容和括号
(?:(?<=\().+?(?=\))|(?<=\[).+?(?=\]))
(?: 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
(?<=\().*?(?=\))
作品根据上面给出的解释,这很好。下面是一个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'"
你应该总是使用代码格式正则表达式,无论他们出现。如果正则表达式在文本中而不是代码块中,则可以使用反引号对它们进行格式化。 ([ref](http://*.com/editing-help#comment-formatting)) – 2015-04-24 01:28:45
此外,问题是关于方括号('[]'),而不是括号。 – 2015-04-24 01:32:00
使用'[^]]'的另一个答案的方法比非贪婪('?')更快,并且也适用于不支持非贪婪的正则表达式。但是,非贪心看起来更好。 – Ipsquiggle 2010-03-08 17:24:44
@Ipsquiggle你是正确的先生:) – StErMi 2012-06-30 09:49:31
如何从输出(结果)中排除'''''? – 2013-04-28 22:46:52