所有特定字母,比如'A',都需要在所有括号中替换.
例如,
A. (AbbAAbb) .A. (bbAbbAbA) .A. (bbbbAbbbb)
Run Code Online (Sandbox Code Playgroud)
我想用''替换括号中的所有'A',最后像这样:
A. (bbbb) .A. (bbbbb) .A. (bbbbbbbb)
Run Code Online (Sandbox Code Playgroud)
任何可能只在正则表达式中执行此操作?
使用Python re,不可能只使用普通的正则表达式,你可以在里面使用替换回调方法re.sub.
如果你想删除所有A内部,(...)你可以使用
re.sub(r'\([^()]+\)', lambda x: x.group().replace('A', ''), s)
Run Code Online (Sandbox Code Playgroud)
这里,\([^()]+\)匹配(,除了(和之外的1+个字符),然后是a ),将匹配值传递给lambda表达式(x),并且可以通过访问匹配文本m.group()(如果定义捕获组,则可以访问它们.group(n)).只需一点replace('A', ''),就可以实现您的需求.
请参阅Python演示
如果使用PyPi正则表达式模块,可以使用普通正则表达式完成相同的操作:
regex.sub(r'(?<=\([^()]*)A(?=[^()]*\))', '', s)
Run Code Online (Sandbox Code Playgroud)
请参阅此Python演示.
在这里,使用了lookarounds,这是有效的,因为PyPi支持无限宽度的lookbehinds.
这种情况有一个共同的解决方法 - 不应存在不平衡/嵌套括号(因为它们).您在A不匹配括号的情况下查找关闭括号后面的s:
A(?=[^)(]*\))
Run Code Online (Sandbox Code Playgroud)
Python代码:
re.sub(r"A(?=[^)(]*\))", "", str)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |