Python:正则表达式匹配匹配

时间:2017-11-21 04:46:04

标签: python regex

文本文件输出的语法格式为word> data <word,其中需要删除括号。 data部分几乎可以是任何东西(并且长度可变),包括新行,空格,点,字母等。目前我正在使用......

text = re.sub("(>)(.{1,10})(<)", r"\2", text)

......但它有明显的局限性,1是长度。不使用*的原因是因为存在一些限制,即:

  • 除了边界外,其他><内无其他dog> 7 4^ 8 0 . 2 1 6? <catexam> 1961 5 . 66 9 <ple
  • 匹配中只有1个数字可以形成单个数字的模式,即test> 0? <string&amp; over> 1980 31, 6 000 <flow不匹配,selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH self.StartTime = QtWidgets.QDateTimeEdit(self.widget) self.StartTime.setCalendarPopup(True) self.StartTime.setObjectName("StartTime") self.gridLayout.addWidget(self.StartTime, 0, 0, 1, 3) self.StartTime.setDate(QDate(datetime.now()-timedelta(days=7))) self.StartTime.setTime(QTime.currentTime()) #This doesn't work #print(self.StartTime.sectionText()) 正常,括号内删除

如何处理?

2 个答案:

答案 0 :(得分:0)

为什么不喜欢这个?

text = re.sub(r">((?:[^<>\d]|\d{2,})*)<", r"\1", text)

(?:[^<>\d]|\d{2,})*匹配除尖括号或数字([^<>\d])之外的任何字符或任何数字,只要至少有两个(\d{2,}),重复(* )。

答案 1 :(得分:0)

由于在问题的一次编辑之后没有一个回答者添加到他们的答案中,我不得不发布另一个问题来回答该部分,并且实际上完成了正则表达式。

最后,我使用的最终代码是:

text = re.sub(r">((?!(?:[^<]*\b\d\b){2})[^><]*)<", r"\1", text)

它只允许1个单位数字,并且在匹配中没有括号,但否则会捕获其他任何内容。