REGEX Форматирование больших файлов дампа для Excel - PullRequest
0 голосов
/ 24 сентября 2018

Проблема У меня проблема с 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

1 Ответ

0 голосов
/ 26 сентября 2018

Я нашел решение.regexr.com/40506

Просто потребовалась горячая минута, чтобы понять, как на самом деле работает этот механизм, чтобы заставить его работать.

Для тех, кто сталкивается с этим: Если у вас более 10 групп в блокноте ++назовите их $ 10, $ 11, $ 12 и т. д., если вы хотите использовать функцию поиска / замены.

* имеет привычку создавать или разрушать регулярные выражения

(?: Этиодноразовые группы все еще могут иметь (захватывать группы) внутри них)?И вы также можете сделать все это условным.

Помещение * после чего-либо означает, что вы получите совпадение независимо, очень полезно, если вы хотите создать пустые группы, чтобы сохранить форматирование столбцов, как я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...