[英]python regular expression get only data between two strings
我不確定如何在第一個或開頭字符串“ USER ID”和最后一個或結尾字符串“ You can”兩個字符串之間獲取數據。
我想要一切,包括數字句號,特殊字符等。
但是我也想在保存的數據中包括兩個字符串(這些開始和結束字符串代表我想要的數據)。
如何編寫表達式以獲取這些字符串之間的數據,同時還將字符串作為結果的一部分包含在內?
看起來像什么
Body: Results of
User ID User Score Full Score Passing Score Passing Status Post Date Elapsed
1 6 7 5 Pass 2014-9-3 16:12:27 00:00:25
Student Information
Student information
E-mail s
First Name s
Last Name s
Information on each question
Question Question Type Points User's Response(s) Correct Answer Result
1. A
2.
3. In l
4. The
5. A
Congratulations, you passed!
You can import
我想要的是
包括Body :(包括單詞“ Body:”,以及直到但不包括第二個中斷詞“ you can”(此處的兩個字符串的大小寫可以是大寫或小寫)的行。
所以我最終會遇到很多:
Body: something
1. some question
you passed
要么
Body: Something
1. You a...
2. Another
You Failed
只要它不是遞歸的,正則表達式就可以:
In [1]: import re
In [2]: haystack1 = "Foo, bar, USER ID bla bla bla You can - cheese"
In [3]: haystack2 = "Foo, bar, USER FOO bla bla bla You can - cheese"
In [4]: haystack3 = "Foo, bar, USER ID bla USER ID bla bla You can foo You can - cheese"
In [5]: for haystack in (haystack1, haystack2, haystack3):
...: m = re.search(r'USER ID.+?You can', haystack)
...: if m:
...: print(haystack, "->", m.group(0))
...: else:
...: print(haystack, "->", "NO LUCK")
...:
('Foo, bar, USER ID bla bla bla You can - cheese', '->', 'USER ID bla bla bla You can')
('Foo, bar, USER FOO bla bla bla You can - cheese', '->', 'NO LUCK')
('Foo, bar, USER ID bla USER ID bla bla You can foo You can - cheese', '->', 'USER ID bla USER ID bla bla You can')
如果您查看haystack 3
,您將了解為什么它不會被遞歸字符串片段(如HTML / XML標記)剪切。
現在說明正則表達式: .+
將匹配任何內容,點表示任何字符,加號表示一個或多個。 .+
的問題在於它是“貪婪的”,它將匹配包括終止符字符串“ You can”在內的所有內容,直到字符串結尾。 所以我們必須添加?
,在此上下文中表示“不要貪婪”。 不要與結構x?
混淆x?
這意味着零或一出現的“ x”。
[更新]
由於您使用多行示例更新了問題,因此可能必須包含re.DOTALL修飾符:
haystack = "Foo, bar\nUSER ID bla\n\t\nbla\nbla You can\n cheese"
m = re.findall(r'USER ID.+?You can', haystack, re.DOTALL)
if m:
print(haystack, "->", m)
else:
print(haystack, "->", "NO LUCK")
re.DOTALL
修飾符意味着該點將匹配任何內容,包括行尾字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.