我正在尝试编写一个正则表达式,以确保根据规范正确重新格式化“标签”。(我正在更新一堆遗留的东西。)
一般的想法是标签可以在()
或中包含括号内容[]
。但是,现有标签可能格式不正确:
- 好的 :
Sample (sample)
Sample [sample]
- 坏的 :
Sample (( sample )
Sample [(sample]]
我目前正在使用一系列正则表达式来处理这个问题,但我想知道在技术上是否可以一次性完成。
在代码的简化版本中......
RE_tag_collapse = re.compile(\
"""
([\[\(])+ ### opening bracket
\s*
( # the contents
[^\]\)]+
)
\s*
([\]\)])* # closing bracket
"""
,
re.I | re.VERBOSE
)
edited= re.sub( RE_tag_collapse , r'\1\2\1' , tag )
这个正则表达式的问题是结束标记(第二个\1
)与开始标记相同。
我想要做的是将结束标签映射为开始标签的倒数:
(
反转为)
[
反转为]
有谁知道这是否容易实现?在我看来,我最好的解决方案是保持原样并使用多个正则表达式。