REGEX从字符串末尾删除

时间:2017-11-02 19:45:04

标签: python regex

我有以下字符串:

x = r"""<FNT size='9'>" & [FacilityID] & " " & [DIAMETER] & "</FNT>"""

使用正则表达式或类似方法动态尝试获得最终结果:

[FacilityID] & " " & [DIAMETER]

不能硬化最终结果。

我有这个从第一个[

]删除字符串
b = re.sub(r'^.*?\&\s', '', x)

但我无法弄清楚如何从右到左阅读第一个反向。

我想我需要使用$符号,但我无法让它工作,谢谢

3 个答案:

答案 0 :(得分:2)

如果您真的只想要第一个[到最后],那么您甚至不需要正则表达式,只需indexlastindex

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]']

请参阅a demo on regex101.com