以下是我获得的更大字符串(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
我已经在网上看了很多,我可以想出找到任何以单个双字符开头的行而不是两个(在这种情况下是[])。 任何帮助将不胜感激。谢谢。
答案 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']