正则表达式:不匹配括号内内容,仅匹配字母、数字和空格,点后不匹配内容
比如,我有一个文件名 [foo] FooBar[!].bar
我想知道怎么用正则表达式来匹配 FooBar
,但不想匹配 [foo]
、[!]
或 .bar
顺便说一下,我是在用Python的正则表达式,如果这有什么关系的话。
简单来说,我想匹配那些不在点后面,或者不在括号里的内容。
3 个回答
0
你可以把所有的内容都替换掉:
>>> re.sub(r'\[.*?\]|\..*', '', '[foo] FooBar[!].bar')
' FooBar'
0
(?:^|])(?!\.)([\w\s]+)(?:\[|$)'
这个规则应该能匹配任何由单词和空格组合而成的内容,这些内容要被]
和[
包围,或者是在字符串的开头和结尾,并且前面不能有一个点。
2
fileName = '[abc][def]Real Name[!].exe'
name = re.search('(\[[^]]*\])*([\w\s]+)', fileName).group(2)
print name
这段代码应该会输出'真实姓名'