我试图用正则表达式匹配下面的字符串,并从中获取一些值(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/