golang中的正则表达式换行符和空格

Ama*_* Ts 2 regex go re2

我试图将下面的字符串与正则表达式匹配,并从中获取一些值.

/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
Run Code Online (Sandbox Code Playgroud)

使用下面的正则表达式

`/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`
Run Code Online (Sandbox Code Playgroud)

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

Kob*_*obi 9

默认情况下.,不符合换行符.要更改它,请使用s标志:

(?s)/system.sensor\d\d.*DeviceID=(?P<sensor>.*)
Run Code Online (Sandbox Code Playgroud)

来自:RE2正则表达式语法参考

(?flags)在当前组中设置标志; 非捕获
s- 让.匹配\n(默认为false)