使用python正则表达式拆分字符串

使用python正则表达式拆分字符串,python,regex,Python,Regex,这是我上一个问题的更新版,我试图分析以下行: 123foo bar456 baz 123foo, bar456, baz 123foo > 13.0 bar456 = 1024 baz 123foo > 13.0, bar456 = 1024, baz 这些项目的格式如下: String1 [OP String2] String1和String2都可以包含字母、数字和“.”(如abc123、1.2.3等) OP可以是:,=,= 项目之间的分隔符“,”是可选的,我想要得到的

这是我上一个问题的更新版,我试图分析以下行:

123foo  bar456  baz
123foo, bar456, baz
123foo > 13.0  bar456 = 1024  baz
123foo > 13.0, bar456 = 1024, baz
这些项目的格式如下:

String1 [OP String2]
String1和String2都可以包含字母、数字和“.”(如abc123、1.2.3等)
OP可以是:,=,=
项目之间的分隔符“,”是可选的,我想要得到的是String1

因此,上述所有行的结果仅为:

['123foo', 'bar456', 'baz']

如何在python中实现这一点?

前面问题中的代码也修改为包含数字:

import re
with open("input") as f:
    for line in f:
        line = line.strip()
        # chop a line into expressions of the form: str [OP str]
        exprs = re.split(r'([\w\d]+\s*(?:[!<>=]=?\s*[\w\d.]*)?\s*,?\s*)', line)
        for expr in exprs:
            # chop each expression into tokens and get the str part
            tokens = re.findall(r'([\w\d]+)\s*(?:[!<>=]=?\s*[\w\d.]*)?,?', expr)
            if tokens: print tokens
重新导入
打开(“输入”)作为f:
对于f中的行:
line=line.strip()
#将一行切分为以下形式的表达式:str[OP str]
exprs=re.split(r'([\w\d]+\s*(?:[!=]=?\s*[\w\d.]*))?\s*,?\s*),第行)
对于expr中的expr:
#将每个表达式切碎为标记,并获得str部分
令牌=re.findall(r'([\w\d]+)\s*(?:[!=]=?\s*[\w\d.]*)?,?',expr)
如果令牌:打印令牌

请向我们展示您的尝试。请为每个输入提供您想要的输出。似乎这是正确的,我正在验证我的输入。您不应该问新问题。如果您再次解释您的要求,上一个答案的作者会很高兴地更新他的答案:)。你应该接受这个答案,但不要打开一个问题进行小的修改,你可以在评论中提问或再次修改你的问题。谢谢提醒,我现在对stackoverflow不是很熟悉,我会记住这一点:)谢谢理解。但你现在能接受这个答案吗?接受的答案将确保该问题不会以“未回答”的形式显示给现在登录的用户。请参阅:。阅读整页。至少,阅读整个正则表达式语法。下面是它的功能:
?:…)
普通括号的非捕获版本。匹配括号内的任何正则表达式,但在执行匹配或稍后在模式中引用后,无法检索组匹配的子字符串。