我有以下字符串:
x = r"""<FNT size='9'>" & [FacilityID] & " " & [DIAMETER] & "</FNT>"""
使用正则表达式或类似方法动态尝试获得最终结果:
[FacilityID] & " " & [DIAMETER]
不能硬化最终结果。
我有这个从第一个[
]删除字符串b = re.sub(r'^.*?\&\s', '', x)
但我无法弄清楚如何从右到左阅读第一个反向。
我想我需要使用$符号,但我无法让它工作,谢谢
答案 0 :(得分:2)
如果您真的只想要第一个[
到最后]
,那么您甚至不需要正则表达式,只需index
和lastindex
。
x = r"""<FNT size='9'>" & [FacilityID] & " " & [DIAMETER] & "</FNT>"""
open = x.find("[")
close = x.rfind("]")
print(x[open:close + 1])
答案 1 :(得分:0)
搜索第一个空方格bracket
,然后将所有字符移至下一个结束方格bracket
,然后将所有字符移至最后的方格bracket
:
x = r"""<FNT size='9'>" & [FacilityID] & " " & [DIAMETER] & "</FNT>"""
x = re.findall("\[.*?\].*?\]", x)[0]
将x
修改为:
'[FacilityID] & " " & [DIAMETER]'
答案 2 :(得分:0)
您可以使用
\[.+\]
# match [, anything else, backtrack to the first ] found
您可以简单地提取所需的输出,而不是删除所有内容。
<小时/> 在Python
:
import re
string = """
<FNT size='9'>" & [FacilityID] & " " & [DIAMETER] & "</FNT>
<FNT size='9'>" & [anything else] & " " & [something here] & "</FNT>
"""
rx = re.compile(r'\[.+\]')
matches = [match.group(0) for match in rx.finditer(string)]
print(matches)
# ['[FacilityID] & " " & [DIAMETER]', '[anything else] & " " & [something here]']