正则表达式组重排

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. 第 1 组:记录类型
  2. Group2:记录的值

您可以尝试使用正则表达式。

<Record><(\w*)\s+(?:value="|utcdate=")(.*?)".*?><\/Record>

详情:

  • (\w*):Group1 - 记录类型
  • (?:value="|utcdate="):Non-capturing 组 - 匹配 value=" 或 utcdate="
  • (.*?):Group2 - 记录值

我在https://regexr.com/5b9c9

中验证了结果