簡體   English   中英

使用 python 獲取包含正則表達式特定字符的兩個變量字符串之間的字符串

[英]Get a string between two variable strings that contain regex specific characters using python

所以我有一個這樣的字符串:

r'irrelevant data (~symbol)relevant data(/~symbol) irrelevant data'

並希望獲得相關數據。 但是,(~symbol)標簽是可變的,這意味着為了找到相關的正則表達式短語,我們需要 go 類似

tags = ["(~symbol)","(/~symbol)"]
string = r'irrelevant data (~symbol)relevant data(/~symbol) irrelevant data'
regex = r'{}([^"]*){}'.format(tags[0],tags[1])
result = re.findall(regex , string)[0]

問題是我們的標簽包含在正則表達式中使用時需要轉義的字符,因此在這種情況下,結果將包含標簽本身,而不僅僅是所需的字符串。

有沒有不涉及替換的好解決方案?

您的問題有很多,所以我將嘗試一一解決:

  • 為了獲得介於兩者之間的“不相關數據”,您可能需要查看re.split
  • 對於帶有特殊字符的分隔符,請使用re.escape
  • 要在結果中排除分隔符,請使用非捕獲組 ( ?: :)。

對於您的示例,它將是這樣的:

import re
patterns = ["(~symbol)", "(/~symbol)"]
string = r'irrelevant data (~symbol)relevant data(/~symbol) irrelevant data'
result = re.split('(?:' + '|'.join(map(re.escape, patterns)) + ')', string)

然后給出

['irrelevant data ', 'relevant data', ' irrelevant data']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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