【发布时间】:2017-10-09 18:33:27
【问题描述】:
我正在尝试从字符串中提取标记,以使这些标记满足某些条件。在我的特殊情况下,我想提取 +、=、- 等符号。
我创建了以下正则表达式:
reg = re.compile(r"[\{\}\(\)\[\]\.,;\+\-\*\/\&\|<>=~]")
但是,当我申请时:
reg.findall('x += "hello + world"')
它也匹配引号之间的+,所以它输出:
['+', '=', '+']
我的预期输出是:
['+', '=']
我的问题是,我该如何做到这一点?甚至可能吗?我一直在网上冲浪,但只找到了如何匹配除双引号之外的所有内容,以及类似的。
【问题讨论】:
-
不可能一次性完成。您需要首先消除所有引用的段(并正确处理任何嵌套的引号)。但这样做的目的是什么?看起来您正在尝试解析源代码,或者可能是算术语句。
-
确实我正在尝试对源代码进行词法分析,所以我只想要我定义的标记,在这种情况下是类型符号的标记。问题是,当定义一个字符串时,我不知道如何处理它。我的猜测是和团体一起玩,但我不知道这是否是正确的道路......
-
源代码是什么语言?如果是 python,请使用 tokenize。
标签: python regex string python-2.7 regex-negation