python正则表达式删除匹配的括号文件

托马斯费米

我有一个Latex文件,其中标记了很多文本\red{},但其中也可能有括号\red{},例如\red{here is \underline{underlined} text}我想删除红色,并在进行一些谷歌搜索后写了以下python脚本:

import os, re, sys
#Start program in terminal with
#python RedRemover.py filename
#sys.argv[1] then has the value filename
ifn = sys.argv[1]
#Open file and read it
f = open(ifn, "r")
c = f.read() 
#The whole file content is now stored in the string c
#Remove occurences of \red{...} in c
c=re.sub(r'\\red\{(?:[^\}|]*\|)?([^\}|]*)\}', r'\1', c)
#Write c into new file
Nf=open("RedRemoved_"+ifn,"w")
Nf.write(c)

f.close()
Nf.close()

但这会转换

\ red {这里是\ underline {下划线}文字}

这是\ underline {带下划线的文字}

这不是我想要的。我想

这是\ underline {下划线}文字

卡西米尔和希波吕特

由于re模块不支持递归,因此无法将不确定级别的嵌套括号与re模块匹配。为了解决这个问题,您可以使用新的regex模块

import regex

c = r'\red{here is \underline{underlined} text}'

c = regex.sub(r'\\red({((?>[^{}]+|(?1))*)})', r'\2', c)

(?1)对捕获组的递归调用在哪里1。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python正则表达式删除匹配的括号文件

来自分类Dev

“)”匹配括号的正则表达式

来自分类Dev

正则表达式与=匹配的括号

来自分类Dev

正则表达式用于Python中的匹配括号

来自分类Dev

Python正则表达式仅匹配部分括号

来自分类Dev

Python正则表达式以匹配空格或开括号

来自分类Dev

Python和正则表达式删除文件中的括号

来自分类Dev

正则表达式以匹配括号和JavaScript括号

来自分类Dev

正则表达式匹配括号和大括号

来自分类Dev

Python正则表达式:如何实现用于检查括号匹配集的正则表达式?

来自分类Dev

HTML文件中的Python正则表达式匹配

来自分类Dev

Python正则表达式匹配

来自分类Dev

python中的正则表达式:删除括号内的括号

来自分类Dev

正则表达式匹配多行括号中的文本

来自分类Dev

Ruby-用于匹配括号的正则表达式?

来自分类Dev

正则表达式在括号内的匹配

来自分类Dev

正则表达式匹配方括号

来自分类Dev

PHP正则表达式不匹配右括号

来自分类Dev

正则表达式匹配括号内的任何字符

来自分类Dev

正则表达式匹配不带“]”开头的括号

来自分类Dev

Kotlin正则表达式匹配括号内容

来自分类Dev

正则表达式,匹配大括号内的值

来自分类Dev

正则表达式-获取匹配括号内的内容

来自分类Dev

大括号之间多次匹配的正则表达式

来自分类Dev

正则表达式匹配方括号

来自分类Dev

正则表达式以匹配外部尖括号

来自分类Dev

vbscript正则表达式匹配大括号

来自分类Dev

正则表达式匹配不带“]”开头的括号

来自分类Dev

Swift-正则表达式以匹配括号