在findall搜索中使用变量

时间:2017-12-13 16:27:09

标签: python regex findall cad step

好的,所以我正在从我创建的字典(DoL)中读取变量:

git reset commit_hash of one less than needed. 

让我们说,在第一次通过DoL迭代:

for i in DoL.keys():
    fobId = DoL["{}".format(i)]["FaceOuterBound"]

我试图创建一个包含变量fobId = 194

的正则表达式findall表达式
fobId

为了找到以edgeloop_txt = re.findall(r'^#'+str(fobId)+r'.*#(\d+).*;', text) 开头的text中的行:

fobId

最后提取数字#159

我的输出#194 = FACE_OUTER_BOUND ( 'NONE', #159, .T. ) ; 只给我空列表:

print(edgeloop_txt)

编辑(提供MCVE):

示例文字:

[]
[] 
[]
...

我正在使用的代码:

...
#190 = DIRECTION ( 'NONE',  ( -1.000000000000000000, -0.0000000000000000000, -0.0000000000000000000 ) ) ;
#191 = DATE_AND_TIME ( #277, #349 ) ;
#192 = ORIENTED_EDGE ( 'NONE', *, *, #253, .T. ) ;
#193 = CARTESIAN_POINT ( 'NONE',  ( 75.00000000000000000, 35.00000000000000000, 0.0000000000000000000 ) ) ;
#194 = FACE_OUTER_BOUND ( 'NONE', #159, .T. ) ;
#195 = ORIENTED_EDGE ( 'NONE', *, *, #205, .T. ) ;
#196 = CARTESIAN_POINT ( 'NONE',  ( 0.0000000000000000000, 35.00000000000000000, 0.0000000000000000000 ) ) ;
...

DoL是这样的字典:

for i in DoL.keys():
    fobId = DoL["{}".format(i)]["FaceOuterBound"]
    edgeloop_txt = re.findall(r'^#'+str(fobId)+r'.*#(\d+).*;', text)
    print(edgeloop_txt)

1 个答案:

答案 0 :(得分:0)

好的,所以我想我已经找到了你的问题。您正在使用大块文本,但正则表达式中有一个table.scroll tbody { height: 150px; overflow-y: auto; overflow-x: hidden; } ,表示行的开头。问题是你没有迭代你正在解析整个文本的行,因为你正在这样做你的正则表达式行开头字符阻止你找到你的匹配。

您的选择是逐行迭代文本,或者只是从正则表达式中删除^

逐行迭代的示例:

^