python - 匹配多个正则表达式组并删除它们

标签 python regex lexical-analysis

我得到了一个文件,我想从中提取有用的数据。文件的格式是这样的:

LINE: 1
TOKENKIND: somedata
TOKENKIND: somedata
LINE: 2
TOKENKIND: somedata
LINE: 3

等...

我想做的是删除 LINE: 和行号以及 TOKENKIND: 所以我只剩下一个由 'somedata somedate somedata...' 组成的字符串

我正在使用 Python 来执行此操作,使用正则表达式(我不确定是否正确)来匹配我想要删除的文件的位。

我的问题是,如何让 Python 匹配多个正则表达式组并忽略它们,将我的正则表达式不匹配的任何内容添加到我的输出字符串中?我当前的代码如下所示:

import re
import sys

ignoredTokens = re.compile('''
    (?P<WHITESPACE>      \s+             ) |
    (?P<LINE>            LINE:\s[0-9]+   ) |
    (?P<TOKEN>           [A-Z]+:         )
''', re.VERBOSE)

tokenList = open(sys.argv[1], 'r').read()
cleanedList = ''

scanner = ignoredTokens.scanner(tokenList)

for line in tokenList:
    match = scanner.match()

    if match.lastgroup not in ('WHITESPACE', 'LINE', 'TOKEN'):
        cleanedList = cleanedList + match.group(match.lastindex) + ' '

print cleanedList

最佳答案

import re

x = '''LINE: 1
TOKENKIND: somedata
TOKENKIND: somedata
LINE: 2
TOKENKIND: somedata
LINE: 3'''

junkre = re.compile(r'(\s*LINE:\s*\d*\s*)|(\s*TOKENKIND:)', re.DOTALL)

print junkre.sub('', x)

关于python - 匹配多个正则表达式组并删除它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791097/

相关文章:

python - 多维数组上的映射函数

python - 在 Python 中使用标题大写字符串的问题

python - 将压缩的 CSV 文件转换为 Dataframe

java - 如何编写 XSD 来验证转义的 xml 数据模式

c++ - 使用 Flex/Bison 进行语法分析第 2 部分

python - Pandas 将下面所有行中的一列乘以另一列

java - 如何在 Java 中使用 $+ 或 $& 正则表达式?

javascript - 如何使用javascript编写只允许句号后两位数字的代码?

c - C语言词法分析——如何在多行注释检测中读取并输出星号?

c++ - &= 必须始终被解释为运算符吗?