簡體   English   中英

從正則表達式中提取文本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM