正则表达式以[]

时间:2017-11-03 09:31:25

标签: python regex

以下是我获得的更大字符串(detaildesc_final)中的示例子字符串。我需要在字符串中使用正则表达式搜索,以便我可以检索所有以"开头的行。 []" (我的意思是两个方括号)来自[数据]部分。应在[Data]部分中检索所有行,直到遇到[Logs]行。

[Data]

[] some text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[Logs]

我使用Python来处理代码,并且我使用了以下命令(显然不正确)。

re.findall(r'\b\\[\\]\w*', detaildesc_final)

我需要结果采用以下格式:

some text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

我已经在网上看了很多,我可以想出找到任何以单个双字符开头的行而不是两个(在这种情况下是[])。 任何帮助将不胜感激。谢谢。

4 个答案:

答案 0 :(得分:1)

不要过于复杂。

for line in detaildesc_final.split('\n'):
    if line.startswith('[]'):
        do_something()

答案 1 :(得分:1)

import re

str = """
[Data]

[] some text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[Logs]
"""


print re.sub("([[a-zA-Z ]{0,}][ ]?)", '',str)

<强>输出:

some text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

some_other_text

答案 2 :(得分:1)

你需要积极的看待背后:

import re

pattern=r'(?<=\[\])(.\w.+)'

string_1="""[Data]

[] some text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[] some_other_text

[Logs]"""


match=re.finditer(pattern,string_1,re.M)
for item in match:
    print(item.group(1))

输出:

 some text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
 some_other_text
  

正则表达式解释:

Positive Lookbehind (?<=\[\])
  

它告诉正则表达式引擎暂时在字符串中向后退一步,   检查lookbehind内的文本是否可以在那里匹配。

  • \[字面匹配字符[(区分大小写)
  • \]字面匹配字符](区分大小写)
  • .匹配任何字符(行终止符除外)
  • \w匹配任何字词(等于[a-zA-Z0-9_]
  • +量词在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)

答案 3 :(得分:1)

import re
re.findall(r'\[\] (.*)\n\n', detaildesc_final)

输出:

['some text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text',
 'some_other_text']