文本:
Name=Jennifer,Age=29,Height=1.70,Occupation=Actress...
正则表达式:
(?<Name>(?:Name=)\w+)?\,?(?<Age>(?:Age=)\d+)?\,?(?<Height>(?:Height=)[\d.]+)?\,?(?<Occupation>(?:Occupation=)\w+)?\,?
结果:
Full match `Name=Jennifer,Age=29,Height=1.70,Occupation=Actress`
Group `Name` `Name=Jennifer`
Group `Age` `Age=29`
Group `Height` `Height=1.70`
Group `Occupation` `Occupation=Actress`
如何使密钥不属于该组,但检查它们是否存在?
答案 0 :(得分:1)
通常,使用仅包含可选模式的正则表达式是一个坏主意(因为您需要处理空匹配,模式只能以预定义的顺序匹配,并且不可能使其与正向前导一起使用因为所有都是可选的)。 使用Name=(\w+)
,Age=(\d+)
之类的正则表达式提取所有必要的详细信息会更有意义。
如果您想要遵循您的路径,可以尝试通过将键放在捕获组之外来修复模式:
(?:Name=(?<Name>\w+))?,?(?:Age=(?<Age>\d+))?,?(?:Height=(?<Height>[\d.]+))?,?(?:Occupation=(?<Occupation>\w+))?,?
请参阅regex demo