将规范正则表达式从C#转换为ECMAScript C ++语法

时间:2017-07-10 06:36:52

标签: c# c++ regex ecmascript-6

我尝试使用以下正则表达式,它已经在C#中使用,在C ++中也是如此,但它在C ++中不起作用。

std::regex r = std::regex("([^%]*(%[.[0-9]*]?[a-z])*)*", std::regex::extended);

它设法匹配几个字符串并正确地拒绝其他字符串,但是在字符串上被卡住(真的卡住了 - 没有错误)&%34%小于可用的pbn%f%d"它应该拒绝(因为有一个%不会立即在法律后缀之后。)

使用std :: regex r = std :: regex("(([^%] )(%(\。([0-9] ))?[az] )&#34);表现出与我之前描述的完全相同的行为。 (我假设这两个正则表达式是等价的 - 只有一个是规范形式,如C#使用,第二个是ECMAScript,如c ++默认值)

举一个我希望正则表达式匹配的例子是:

在状态%s(%d)中获得事件%s(%d),转移到州%s(%d)......

一些%.34x事件

正则表达式应该与以下内容不匹配:

一些%的东西

用语言解释正则表达式应该做什么 - 它应该接受唯一的字符串,其中所有出现的(如果有的话)%的字母前面都有一个字母或一个.46456x(也就是一些数字和一个字母)并拒绝所有其他人。

0 个答案:

没有答案