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

Regex: extract strings from pattern string1.string2'string3 where string1 can contain a '.' character

本文关键字:字符串 包含 字符 提取 模式 正则表达式 string3 string2      更新时间:2023-10-16

>我需要一个正则表达式来从以下形式的字符串中提取字符串 1、字符串 2 和字符串 3: string1.string2'string3 .输入中可能不存在分隔符"."和"。

问题是 string1 也可能包含句点字符 '.,因此必须使用最右边的句点来提取字符串 1。

可能有帮助的是,可以对字符串2的长度施加一个条件:它必须由正好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::string的,也可以是std::wstring

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

演示

强制:

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