正则表达式:从模式string1.string2' string3中提取字符串,其中string1可以包含'。'字符

时间:2017-03-26 02:02:39

标签: c++ regex

我需要一个正则表达式从表单的字符串中提取string1,string2和string3: string1.string2'string3。分隔符'。'和'''可能不存在于输入中。

问题是string1可能包含句点字符'。'因此,最右边的时间段必须用于提取string1。

可能有帮助的是,string2的长度存在一个条件:它必须由3个字母字符组成,它是国家代码,如USA,JPN。

示例:

input: Hello -> string1=Hello 
input: Hello.b ->  string1=Hello.b 
input: Hello.USA -> string1=Hello, string2=USA 
input: Hello.c.JPN -> string1=Hello.c, string2=JPN
input: Hello.d.r.USA'Today -> string1=Hello.d.r, string2=USA, string3=Today
input: Hello.d'Today -> string1=Hello.d, string3=Today

输入字符串可以是std::stringstd::wstring

1 个答案:

答案 0 :(得分:1)

std::regex re("([^\\.']+(\\.(?![^']{3}('|$))[^\\.']+)*)(\\.([^']{3}))?('(.+))?");

Demo

强制性:

  

有些人在面对问题时会想到,我知道,我会使用正则表达式。"现在他们有两个问题。 - 杰米·扎温斯基