首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要regex命令才能在xml文件中找到值。

需要regex命令才能在xml文件中找到值。
EN

Stack Overflow用户
提问于 2020-05-29 13:44:15
回答 1查看 274关注 0票数 1

我在日志语句中有一个大型xml文件。我正在使用Splunk从xml文件中提取值。我必须使用regex来查找这些值,因为我不能更改配置文件。我要求改变但它还在等待..。这是xml文件的一个示例:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<tmsTrip xmlns="http://ground.fedex.com/schemas/linehaul/trip" xmlns:ns2="http://ground.fedex.com/schemas/linehaul/TMSCommon">
   <tripNumber>129271010</tripNumber>
   <tripLegNumber>1</tripLegNumber>
   <origin>
      <ns2:numberCode>5902</ns2:numberCode>
  ...many more fields....
   </origin>
   <destination>
      <ns2:numberCode>5087</ns2:numberCode>
   ...many more fields....
   </destination>
  ...many more fields....
   <purchasedCost>
      <purchasedCostTripSegment>
         <purchCostReference>2644025</purchCostReference>
         <carrier>BNSF</carrier>
         <vendorType>RAIL</vendorType>
         <carrierTrailerType>53PC</carrierTrailerType>
         <origin>
            <ns2:numberCode>4022</ns2:numberCode>
...many more fields....
         </origin>
         <destination>
            <ns2:numberCode>4040</ns2:numberCode>
...many more fields....     
         <stopOff>
            <ns2:stopOffLocation>
               <ns2:numberCode>9996</ns2:numberCode>
...many more fields....       
            </ns2:stopOffLocation>
         </stopOff>
         <schedDispatchDate>2020-05-27T05:00:00.000Z</schedDispatchDate>
...many more fields....
      </purchasedCostTripSegment>
      <purchasedCostTripSegment>
         <purchCostReference>2644025</purchCostReference>
         <carrier>NS</carrier>
         <vendorType>RAIL</vendorType>
         <carrierTrailerType>53PC</carrierTrailerType>
         <origin>
            <ns2:numberCode>4061</ns2:numberCode>
...many more fields....
         </origin>
         <destination>
            <ns2:numberCode>4040</ns2:numberCode>
...many more fields....         
         </destination>
         <stopOff>
            <ns2:stopOffLocation>
               <ns2:numberCode>4040</ns2:numberCode>
 ...many more fields....      
            </ns2:stopOffLocation>
         </stopOff>
         <schedDispatchDate>2020-05-27T05:00:00.000Z</schedDispatchDate>
 ...many more fields....     
      </purchasedCostTripSegment>
   </purchasedCost>
</tmsTrip>

我需要为每个ns2:numberCode的起源和目的地标识purchasedCostTripSegment.

我是在Splunk中这样做的,所以regex可能是Splunk特有的。如果我使用函数ns2:numberCode. mvindex()并计算的实例,我就能够找到原点和目的地。但是,它们是单独的字段,不能在表中清楚地显示。这是regex命令,它将返回PurchaseCostTripSegment的第一个起源:

代码语言:javascript
运行
复制
| rex max_match=0 "\<ns2\:numberCode\>(?P<location>[^\<]+)" | eval Segment1_Origin =  mvindex(location, 7)

我需要一个正则表达式,它将返回我尝试过的所有PurchaseCostTripSegments的起源:

代码语言:javascript
运行
复制
| rex max_match=0 "\<purchasedCostTripSegment\>*\<origin\>*\<ns2\:numberCode\>(?P<Origin>[^\<]+)"

它没有返回任何价值。如何编写regex以查找xml本节中的所有ns2:numberCode代码值:

代码语言:javascript
运行
复制
     <purchasedCostTripSegment>
             <purchCostReference>2644025</purchCostReference>
             <carrier>BNSF</carrier>
             <vendorType>RAIL</vendorType>
             <carrierTrailerType>53PC</carrierTrailerType>
             <origin>
                <ns2:numberCode>4022</ns2:numberCode>
</purchasedCostTripSegment>
      <purchasedCostTripSegment>
         <purchCostReference>2644025</purchCostReference>
         <carrier>NS</carrier>
         <vendorType>RAIL</vendorType>
         <carrierTrailerType>53PC</carrierTrailerType>
         <origin>
            <ns2:numberCode>4061</ns2:numberCode>
</purchasedCostTripSegment>

在上面的例子中,我想返回值4022和4061,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-29 14:15:41

您可以将此用作临时解决方法:

代码语言:javascript
运行
复制
| rex max_match=0 "<purchasedCostTripSegment>[\s\S]*?<origin>\s*<ns2:numberCode>(?P<Origin>\d+)"

regex演示

详细信息

  • <purchasedCostTripSegment> -一些文字文本
  • [\s\S]*? -零或多个字符,尽可能少
  • <origin> -一些文本
  • \s* - 0+空白字符
  • <ns2:numberCode> -一些文本
  • (?P<Origin>\d+) -命名捕获组(对于Splunk,它必须是一个命名组):1或更多位数。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62087406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档