The Problem 我在REGEX上遇到了问题,并将其用于我需要做的事情。我需要将数个转储文件中的两百万行放入可使用的电子表格中。
这是我所能得到的。
问题是试图将它们全都分开给我,因为excel无法很好地导入它们。
我遇到了一个麻烦,如果这些项目不是列表中的下一个项目,那么它们根本就不会匹配。
另一个问题是,对象与对象之间的行并不总是以相同的特定顺序列出
这是让我走得最远的REGEX,但现在我已经完全陷入困境了。
(?<=^Object\s{3})(\w*).(?:^Type\s{2,3}(\S*).*?)*.(?:^DeviceId\s{2,3}(\S*).*?)*.(?:^Alias\s{2,3}(\S*).*?)*(?:^InstanceId\s{2,3}(\S*).*?)*.(?:^Description\s{2,3}(\S*).*?)*.(?:^Location\s{2,3}(\S*).*?)*.(?:^NetworkId\s{2,3}(\S*).*?)*.(?:^SerialNum\s{2,3}(\S*).*?)*.(?:^DefaultRouter\s{2,3}(\S*).*?)*.(?:^EthernetId\s{2,3}(\S*).*?)*.(?:^IPAddress\s{2,3}(\S*).*?)*.(?:^SubnetMask\s{2,3}(\S*).*?)*.(?:^PPPSubnetMask\s{2,3}(\S*).*?)*.(?:^Port\s{2,3}(\S*).*?)*.(?:^DefaultPort\s{2,3}(\S*).*?)*.(?:^BACnetDeviceId\s{2,3}(\S*).*?)*.(?:^BacnetMSTPNetNum\s{2,3}(\S*).*?)*.(?:^Baud\s{2,3}(\S*).*?)*.(?:^DefaultBaud\s{2,3}(\S*).*?)*.(?:^Channel\s{2,3}(\S*).*?)*.(?:^VersionNum\s{2,3}(\S*).*?)*.(?:^Properties\s{2,3}(\S*).*?)*.(?:^FullName\s{2,3}(\S*).*?)*.(?:^Password\s{2,3}(\S*).*?)*.(?:^SecurityLevel\s{2,3}(\S*).*?)*.(?:^CreatedBy\s{2,3}(\S*).*?)*.(?:^Owner\s{2,3}(\S*).*?)*.(?:^InfinetCtlr\s{2,3}(\S*).*?)*.(?:^InfinetId\s{2,3}(\S*).*?)*.(?:^RefreshRate\s{2,3}(\S*).*?)*.(?:^Format\s{2,3}(\S*).*?)*.(?:^Value\s{2,3}(\S*).*?)*.(?:^DBQualifier\s{2,3}(\S*).*?)*.(?:^DatabaseMode\s{2,3}(\S*).*?)*.(?:^LogIntervalSecs\s{2,3}(\S*).*?)*.(?:^LogType\s{2,3}(\S*).*?)*.(?:^Units\s{2,3}(\S*).*?)*.(?:^Param1\s{2,3}(\S*).*?)*.(?:^Param3\s{2,3}(\S*).*?)*.(?:^Param4\s{2,3}(\S*).*?)*.(?:^Param5\s{2,3}(\S*).*?)*.(?:^Param6\s{2,3}(\S*).*?)*.(?:^DefaultMode\s{2,3}(\S*).*?)*.(?:^XdriverFile\s{2,3}(\S*).*?)*.*?(?=^EndObject)
这是我要获取的数据示例:
Object CHWDifPrs07
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWDifPrs07
CreateTime 5/10/2011 12 2 23 PM
TimeLocked 6/16/2014 12 10 54 PM
InstanceId 7439/17
Channel 15
Description CHW DP 7
Export True
Format #.##
Size 400
Port
Units Psi
EndObject
Object CHWRTmp05
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWRTmp05
CreateTime 5/10/2011 12 2 22 PM
TimeLocked 6/16/2014 12 11 17 PM
InstanceId 7439/12
Channel 14
Description CHWR Temp 5
Export True
Format ###.##
Size 400
Port
Units Deg.F
EndObject
Object CHWRTmp06
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWRTmp06
CreateTime 5/10/2011 12 2 23 PM
TimeLocked 5/11/2011 4 43 48 PM
InstanceId 7439/13
Channel 12
Description ChwR Temp 6
Export True
Format ###.##
Size 400
Port
Units Deg.F
EndObject
Object CHWRTmp07
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWRTmp07
CreateTime 5/10/2011 12 2 23 PM
TimeLocked 5/11/2011 9 29 45 AM
InstanceId 7439/14
Channel 17
Description CHWR Temp 7
Export True
Format ###.##
Size 400
Port
Units Deg.F
EndObject
Object CHWSTmp05
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWSTmp05
CreateTime 5/10/2011 12 2 22 PM
TimeLocked 8/15/2014 10 25 30 AM
InstanceId 7439/9
Channel 13
Description CHWS Temp 5
Export True
Format ###.##
Size 400
Port
Units Deg.F
EndObject
Object CHWSTmp06
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWSTmp06
CreateTime 5/10/2011 12 2 22 PM
TimeLocked 5/11/2011 9 29 59 AM
InstanceId 7439/10
Channel 11
Description ChWS Temp 6
Export True
Format ###.##
Size 400
Port
Units Deg.F
EndObject
Object CHWSTmp07
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias CHWSTmp07
CreateTime 5/10/2011 12 2 22 PM
TimeLocked 5/11/2011 9 30 6:00 AM
InstanceId 7439/11
Channel 16
Description CHWS Temp 7
Export True
Format ###.##
Size 400
Port
Units Deg.F
EndObject
Object SpaceRHF13
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias SpaceRHF13
CreateTime 5/10/2011 12 2 22 PM
AlarmInfo True
TimeLocked 8/27/2014 12 34 1:00 PM
InstanceId 7439/8
Channel 18
Description Space Relative Humidity F.13
Export True
Format %#.#
Size 96
Port
ExtLogEnable True
AlarmLinks
Root\Mia_SpaceRH_Hi 1 Enabled
Root\Mia_SpaceRH_Low 2 Enabled
EndObject
Object SpaceRHF15
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias SpaceRHF15
CreateTime 5/10/2011 12 2 22 PM
AlarmInfo True
TimeLocked 8/27/2014 12 33 35 PM
InstanceId 7439/7
Channel 20
Description Space Relative Humidity F.15
Export True
Format %###.#
Size 96
Port
ExtLogEnable True
AlarmLinks
Root\Mia_SpaceRH_Hi 1 Enabled
Root\Mia_SpaceRH_Low 2 Enabled
EndObject
Object SpaceRHH15
Type InfinityInput
DeviceId Terremark.FL\S300_3SC\S300_M08
Alias SpaceRHH15
CreateTime 5/10/2011 12 2 22 PM
AlarmInfo True
TimeLocked 11/4/2015 11 50 5:00 AM
InstanceId 7439/6
Channel 22
Description Space Relative Humidity H.15
答案 0 :(得分:0)
我找到了解决方案。 regexr.com/40506
只花了几分钟时间就了解了东西实际上是如何工作的。
对于遇到此问题的其他人:如果您在notepad ++中有10个以上的组,则在使用查找/替换时请给它们加上$ 10,$ 11,$ 12等...
*有制作或破坏正则表达式的习惯
(?:这些一次性小组内部仍然可以有(捕获小组))?而且,您还可以使整个条件成为条件。
在某些内容后面加上*表示无论如何都要匹配,如果您想像我一样将空的组设置为保持列格式非常有用。