[英]Extract text from Regular Expression?
我試圖在正則表達式中獲得一些匹配文本的結果,但它似乎不起作用。 有誰知道可能會出錯?
import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>[^\>]+)>", text)
if match:
print (match.group('brackets'))
這沒有打印,即找不到匹配。
這實際上是一個非常常見的錯誤 - 當你想使用re.search
時,看起來你正在使用re.match
。 re.match
只匹配給定文本的開頭,而re.search
檢查整個事物。
import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>[^\>]+)>", text)
if match:
print (match.group('brackets'))
輸出:
'angle brackets'
雖然@Tom Jacques非常好地回答了這個問題,但當我嘗試時,問題和答案中顯示的代碼對我來說都不起作用。 以下代碼有效:
import re
text = "I want to match anything in <angle brackets>"
match = re.search("\<(?P<brackets>.*)\>",text)
if match:
print (match.group('brackets'))
注意在正則表達式中替換文本[^
with .*)
,並在調用re.search()
包含text
參數。
(編輯)
這個答案解決了一個問題,該問題已在問題和其他答案中得到糾正。 對此處提出的正則表達式的更改將捕獲到行中最后一個>
所有文本,而問題和另一個答案中更改的正則表達式將捕獲文本,直到它找到的第一個>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.