python re模块使用
"""将C、O、N等没加上中括号对的,加上"""
>>> testcase1 = "[H]C([H])[H]"
>>> testcase2 = "[H]c([H])[H]"
>>> testcase3 = "[H]O([H])[H]"
>>> re.sub(r'(?<!\[)([CcOoNn])(?!H)',r'[\1]',testcase1)
'[H][C]([H])[H]'
>>> re.sub(r'(?<!\[)([CcOoNn])(?!H)',r'[\1]',testcase2)
'[H][c]([H])[H]'
>>> re.sub(r'(?<!\[)([CcOoNn])(?!H)',r'[\1]',testcase3)
'[H][O]([H])[H]'
- \1的用法,很方便且灵活
- 这里还用到了 正反向预查,处理特殊情况比较方便
正则和通配的关系
通配
尤其注意,通配的*和正则里面的*是不一样的含义
正则
- 通配是shell能够解析的
- 正则是给支持正则的命令自身解析的(like grep),所以要用引号防止shell将特殊符号进行了转义