我试图用正则表达式匹配下面的字符串,并从中获取一些值(value)。

/system1/sensor37
  Targets
  Properties
    DeviceID=37-Fuse
    ElementName=Power Supply
    OperationalStatus=Ok
    RateUnits=Celsius
    CurrentReading=49
    SensorType=Temperature
    HealthState=Ok
    oemhp_CautionValue=100
    oemhp_CriticalValue=Not Applicable

使用以下正则表达式
`/system1/sensor\d\d\n.*\n.*\n\s*DeviceID=(?P<sensor>.*)\n.*\n.*\n.*\n\s*CurrentReading=(?P<reading>\d*)\n\s*SensorType=Temperature\n\s*HealthState=(?P<health>.*)\n`

现在我的问题是:还有更好的方法吗?
我明确提到了字符串中的每个新行和空白组。但是我只能说/system.sensor\d\d.*DeviceID=(?P<sensor>.*)\n*.(这对我不起作用,但是我相信应该有办法。)

最佳答案

默认情况下,.与换行符不匹配。要更改此设置,请使用s标志:

(?s)/system.sensor\d\d.*DeviceID=(?P<sensor>.*)

来自:RE2 regular expression syntax reference

关于regex - 正则表达式换行符和Golang中的空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43706322/

10-12 05:46