【发布时间】:2010-02-12 21:39:26
【问题描述】:
在 Python 中,我可以使用 re.findall(pattern, string) 返回字符串中所有不重叠的模式匹配项。
例如,在以下 SVG 路径命令中:
import re
spam = "M317.0,169.7C311.1,170.5 285.7,146.8 300.7,178.57 L 321.4,175.01"
eggs = re.findall("([A-Za-z]|-?[0-9]+\.?[0-9]*(?:e-?[0-9]*)?)", spam)
print(eggs)
['M', '317.0', '169.7', 'C', '311.1', '170.5', '285.7', '146.8', '300.7', '178.5', 'L', '321.4', '175.0']
在 C 或 C++ 中,有一种轻量级、干净且有效的方法来进行这种类型的正则表达式模式匹配吗?请注意,我不是在寻找依赖于 Boost 的解决方案。理想情况下,我想尽量减少依赖关系并保持我的代码精简......
【问题讨论】:
-
不幸的是,标准 C++ 语言不包含正则表达式函数。您必须使用
std::string构建一些东西,或者使用外部库。 -
你需要添加一些库,而 Boost 做了很多事情,本质上是终极的可移植性,那么为什么不使用它呢? (C++0x 添加了正则表达式,但这是一个在采用过程中添加到库中的速度很慢的特性。)
-
boost是几乎所有 C++ 项目中都值得拥有的依赖项。
标签: c++ python regex pattern-matching