正则表达式匹配大括号内的数字

时间:2012-02-27 04:38:30

标签: python regex file

我在以下程序中提取某些数据时遇到问题,其中标有粗体和斜体。我想从文件中提取这些数据并按如下方式处理它。

i 1CAT(0)

i 2CAT(1)

o 22CAT(10)

o 23CAT(9)

g1 ***and*** 6CAT(**3**) 3CAT(**2**) ; 11CAT(**5**)

g2 ***or*** 3CAT(**2**) 1CAT(**0**) ; 10CAT(**16**)

示例:

第5行:if(和)出现然后做3 + 2 * 5

第6行:if(或)出现然后做2-0 + 16

等...

代码到现在为止:

import os
os.chdir('/home/pr/Documents/')
inputFile=open('C17.txt','r')
inputfile.readline()
print inputFile.read()
inputFile.close()

1 个答案:

答案 0 :(得分:1)

您需要区分要在字符串中匹配的大括号和属于正则表达式的大括号。

所有类型的大括号对正则表达式都有特殊含义,因此如果要匹配它们,则需要将它们转义。

关于评论中的正则表达式

  

re.findall(R '(0-9)',INPUTFILE)

  • re.findall (link),需要一个字符串作为第二个参数而不是文件句柄。

  • (0-9)只匹配一个数字,因为括号未转义,所以该值会存储在捕获组中。 (Check here the paragraph (...))。如果您想同时匹配多个数字的数字,您应该查看量词(+*{m,n}相同的链接。)

    < / LI>

关于OP中的代码

您知道您提供的代码与任务没什么关系(文件打开和关闭除外)。您可能希望查看有关"Reading and Writing Files"

的Python教程