繁体   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