2015-07-10 208 views
0

所以我新的正则表达式在python中。 我正在一个csv文件中提取所有行。 现在我无法进行搜索。我想找到这[[*]],*之间的任何字符。它任何帮助 目前,我在环正则表达式与特殊字符

searchObj = re.match(r'\[\[(.*)\]\]', str(row), re.M|re.I) 

回答

0

如上所述,findall解决方案应该正常工作?你需要给出一个示例行,然后我们可以看到它为什么不适合你。假设您已经阅读您的CSV行成列的列表,然后下面应该可以看到:

row = ["Col1", "Col2 has [[foo]] in it", "Col3", "Col4 has [[foo]]] and [[bar]]"] 

for col in row: 
    print re.findall(r'\[\[(.*?)\]\]', col, re.M|re.I) 

,并提供:

[] 
['foo'] 
[] 
['foo', 'bar'] 
1

使用re.findall以此来提取这些括号内的文本presnt,因为re.match试图从字符串的开头相匹配。

find_lst = re.findall(r'\[\[(.*?)\]\]', str(row), re.M|re.I) 

OR

使用re.search

find_obj = re.search(r'\[\[(.*?)\]\]', str(row), re.M|re.I) 
+0

这没有奏效。我需要在[[和]]之间查找文本,我正在用正则表达式做错。 –

+0

是'[[]]'包含新的行字符之间的文本?如果是,则使用're.DOTALL'来代替're.M' –

+0

提供确切的输入。 –

0
searchObj = re.match(r'.*?\[\[(.*?)\]\]', str(row), re.M|re.I).groups() 

match从beginning.So比赛,你可以从开始匹配,并抓住该组。