我正在开发一个在基于linux的系统上运行的商业(非开源)C++项目.我需要在C++代码中做一些正则表达式.(我知道:我现在有2个问题.)
问题:经常从C/C++开始使用正则表达式的人建议我查看哪些库?快速搜索引起了我的注意:
1)Boost.Regex(我需要阅读Boost软件许可证,但这个问题与软件许可证无关)
2)C(不是C++)POSIX正则表达式(#include <regex.h>,regcomp,regexec等)
3)http://freshmeat.net/projects/cpp_regex/ (我对此一无所知;似乎是GPL,因此无法在此项目中使用)
例如.如果我有一个像"第一个第二个第三个"的字符串,我想在一个操作中匹配每个单词,逐个输出.
我只是认为"(\ b\S*\b){0,}"会起作用.但实际上并没有.
我该怎么办?
这是我的代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
regex exp("(\\b\\S*\\b)");
smatch res;
string str = "first second third forth";
regex_search(str, res, exp);
cout << res[0] <<" "<<res[1]<<" "<<res[2]<<" "<<res[3]<< endl;
}
Run Code Online (Sandbox Code Playgroud)
我期待着你的帮助.:)
标记英文文本的最佳正则表达式是什么?
通过英文标记,我的意思是一个由最大数量的字符组成的原子,可以有意义地用于NLP目的.类比是任何编程语言中的"标记"(例如,在C中,'{','[','hello','&'等可以是标记).有一个限制:虽然英文标点字符可以是"有意义的",但为了简单起见,当它们没有出现在\ w +的中间时,让我们忽略它们.所以,"你好,世界." 收益'你好'和'世界'; 同样地,"你很好看." 可能会产生[你,是,好看]或[你,好,好看].