正则表达式组重排
Regex group rearrangement
我认为我的方法本身在匹配组方面是错误的。有没有可能做点聪明的事?
我的表情是:
<Record><((\w*)\s+((value="(.*?)")|(utcdate="(.*?)")).*?)></Record>
这里是link:regexr
我的输入是:
<StepVal Name="Something"><Record><Time value="2.001" unit="s" /></Record></StepVal>
<StepVal Name="Something"><Record><Date utcdate="07/08/2015 04:40:14" timezone="UTC" /></Record></StepVal>
预期输出为:
<StepVal Name="Something"><Record type="Time" value="2.001"/></StepVal>
<StepVal Name="Something"><Record type="Date" value="07/08/2015 04:40:14"/></StepVal>
如您在屏幕截图中所见,替换表达式在第一种情况下适用于第 2 组和第 5 组。
对于第二种情况,我必须使用第 2 组和第 7 组。
我想我在这里给自己打了一个结。
除了组之外还有更好的方法吗?
我提前向使用正则表达式解开 xml 表示歉意。我必须处理交给我的牌。
我想你只需要两组:
- 第 1 组:记录类型
- Group2:记录的值
您可以尝试使用正则表达式。
<Record><(\w*)\s+(?:value="|utcdate=")(.*?)".*?><\/Record>
详情:
(\w*)
:Group1 - 记录类型
(?:value="|utcdate=")
:Non-capturing 组 - 匹配 value=" 或 utcdate="
(.*?)
:Group2 - 记录值
中验证了结果
我认为我的方法本身在匹配组方面是错误的。有没有可能做点聪明的事?
我的表情是:
<Record><((\w*)\s+((value="(.*?)")|(utcdate="(.*?)")).*?)></Record>
这里是link:regexr
我的输入是:
<StepVal Name="Something"><Record><Time value="2.001" unit="s" /></Record></StepVal>
<StepVal Name="Something"><Record><Date utcdate="07/08/2015 04:40:14" timezone="UTC" /></Record></StepVal>
预期输出为:
<StepVal Name="Something"><Record type="Time" value="2.001"/></StepVal>
<StepVal Name="Something"><Record type="Date" value="07/08/2015 04:40:14"/></StepVal>
如您在屏幕截图中所见,替换表达式在第一种情况下适用于第 2 组和第 5 组。
对于第二种情况,我必须使用第 2 组和第 7 组。
我想我在这里给自己打了一个结。 除了组之外还有更好的方法吗?
我提前向使用正则表达式解开 xml 表示歉意。我必须处理交给我的牌。
我想你只需要两组:
- 第 1 组:记录类型
- Group2:记录的值
您可以尝试使用正则表达式。
<Record><(\w*)\s+(?:value="|utcdate=")(.*?)".*?><\/Record>
详情:
(\w*)
:Group1 - 记录类型(?:value="|utcdate=")
:Non-capturing 组 - 匹配 value=" 或 utcdate="(.*?)
:Group2 - 记录值