【发布时间】:2019-06-10 13:09:24
【问题描述】:
一个文件在逻辑定义的字符串块中有 n 行。我正在解析每一行并根据一些匹配条件捕获所需的数据。
我已经阅读了每一行并找到了带有此代码的块:
#python
for lines in file.readlines():
if re.match(r'block.+',lines)!= None:
block_name = re.match(r'block.+', lines).group(0)
# string matching code to be added here
输入文件:
line1 select KT_TT=$TMTL/$SYSNAME.P1
line2 . $dhe/ISFUNC sprfl tm/tm1032 int 231
line3 select IT_TT=$TMTL/$SYSNAME.P2
line4 . $DHE/ISFUNC ptoic ca/ca256 tli 551
.....
.....
line89 CALLING IK02=$TMTL/$SYSNAME.P2
line90 CALLING KK01=$TMTL/$SYSNAME.P1
每一步的匹配条件和预期输出:
- 在读取行时,匹配单词“/ISFUNC”并从最后一个字符获取字符,直到匹配“/”并将其保存到变量中。预期 o/p->tm1032 int 231, ca256 tli 551(在第 2 行和第 4 行等中找到匹配字符串)
- 找到 ISFUNC 后,读取前一行并从该行获取数据,从最后一个字符开始,直到它与“/”匹配,然后将其保存到变量中。预期 o/p->$SYSNAME.P1 & $SYSNAME.P2(第 1 行和第 3 行等)
- 继续向下阅读行并查找以“CALLING”开头的行,“/”之后的最后一个字符串应与步骤 2 的 o/p 匹配($SYSNAME.P1 和 $SYSNAME.P2)。只需在 CALLING 字之后捕获数据并保存即可。预期 o/p -> KK01(第 90 行)和 IK02(第 89 行)
最终输出应该是这样的
FUNC SYS CALL
tm1032 int 231 $SYSNAME.P1 KK01
ca256 tli 551 $SYSNAME.P2 IK02
【问题讨论】:
-
这里有什么问题?您在编写正则表达式模式方面需要帮助?