代码之家  ›  专栏  ›  技术社区  ›  SuperJMN

与标记后的第一个字符串匹配的正则表达式

  •  0
  • SuperJMN  · 技术社区  · 6 年前

    给定这样的字符串,我想创建一个正则表达式来捕获字符串“identificator”。此字符串已本地化,因此出现问题。

    作为一个提示,我认为可以很容易地检索到它,因为它是在“————”之后的字符串。每个条目都用这个“----”分隔,第一个元素是我想要的字符串。所以正则表达式可以返回“identificator”或{“identificator”,“identificator”,“identificator”,…}(每个条目一个字符串)。

    下面是示例输入:

    Administrador de arranque de firmware
    -----------------------------------
    Identificador           {fwbootmgr}
    displayorder            {bootmgr}
    
    Administrador de arranque de Windows
    ----------------------------------
    Identificador           {bootmgr}
    device                  partition=G:
    path                    \efi\boot\bootarm.efi
    description             Windows Boot Manager
    locale                  en-US
    inherit                 {globalsettings}
    booterrorux             Simple
    default                 {default}
    displayorder            {838bb5a3-712f-11e8-b4ea-001a7dda710e}
                            {default}
                            {7619dcc9-fafe-11d9-b411-000476eba25f}
    bootsequence            {01de5a27-8705-40db-bad6-96fa5187d4a6}
    timeout                 30
    displaybootmenu         Yes
    processcustomactionsfirstYes
    persistbootsequence     Yes
    
    Cargador de arranque de Windows
    -----------------------------
    Identificador           {311b88b5-9b30-491d-bad9-167ca3e2d417}
    device                  ramdisk=[F:]\PROGRAMS\UpdateOS\UpdateOS.wim,{ramdiskoptions}
    path                    \windows\system32\boot\winload.efi
    description             Windows Update OS (Boot from WIM)
    inherit                 {bootloadersettings}
    osdevice                ramdisk=[F:]\PROGRAMS\UpdateOS\UpdateOS.wim,{ramdiskoptions}
    systemroot              \windows
    bootmenupolicy          Standard
    winpe                   Yes
    
    Cargador de arranque de Windows
    -----------------------------
    Identificador           {7619dcc9-fafe-11d9-b411-000476eba25f}
    device                  partition=F:
    path                    \windows\system32\boot\winload.efi
    description             Windows Phone
    locale                  en-US
    inherit                 {bootloadersettings}
    bootdebug               No
    nointegritychecks       Yes
    osdevice                partition=F:
    systemroot              \windows
    bootmenupolicy          Standard
    bootstatuspolicy        IgnoreAllFailures
    ems                     No
    
    Aplicaci¢n de arranque de Windows (1020000a)
    ------------------------------------------
    Identificador           {01de5a27-8705-40db-bad6-96fa5187d4a6}
    device                  partition=G:
    path                    \windows\system32\boot\mobilestartup.efi
    description             Mobile Startup App
    inherit                 {bootloadersettings}
    recoverysequence        {311b88b5-9b30-491d-bad9-167ca3e2d417}
    recoveryenabled         Yes
    nointegritychecks       Yes
    
    Aplicaci¢n de arranque de Windows (1020000a)
    ------------------------------------------
    Identificador           {0ff5f24a-3785-4aeb-b8fe-4226215b88c4}
    device                  partition=G:
    path                    \windows\system32\boot\ffuloader.efi
    description             FFU Loader (User Invoked)
    inherit                 {bootloadersettings}
    custom:26000201         Yes
    
    Aplicaci¢n de arranque de Windows (1020000a)
    ------------------------------------------
    Identificador           {default}
    device                  partition=G:
    path                    \EFI\boot\BootShim.efi
    description             BootShim
    nointegritychecks       Yes
    testsigning             Yes
    
    Aplicaci¢n de arranque de Windows (1020000a)
    ------------------------------------------
    Identificador           {838bb5a3-712f-11e8-b4ea-001a7dda710e}
    device                  partition=G:
    path                    \Windows\System32\BOOT\developermenu.efi
    description             Developer Menu
    
    Aplicaci¢n de arranque de Windows (1020000a)
    ------------------------------------------
    Identificador           {bd8951c4-eabd-4c6f-aafb-4ddb4eb0469b}
    device                  partition=G:
    path                    \windows\system32\boot\resetphone.efi
    description             Reset My Phone Application
    inherit                 {bootloadersettings}
    custom:26000206         Yes
    
    Configuraci¢n de EMS
    --------------------
    Identificador           {emssettings}
    bootems                 No
    
    Configuraci¢n del depurador
    ---------------------------
    Identificador           {dbgsettings}
    description             Windows Debugger Settings
    
    Configuraci¢n global
    --------------------
    Identificador           {globalsettings}
    inherit                 {dbgsettings}
                            {emssettings}
    bootuxtransitiontime    5000
    booterrorux             Simple
    extendedinput           Yes
    nobootuxtext            Yes
    nobootuxprogress        Yes
    nobootuxfade            No
    nokeyboard              Yes
    mobilegraphics          Yes
    custom:250000e0         1
    chargethreshold         255
    custom:25000511         90
    bootflow                0x0
    offmodecharging         No
    
    Configuraci¢n del cargador de arranque
    ------------------------------------
    Identificador           {bootloadersettings}
    inherit                 {globalsettings}
    advancedoptions         No
    optionsedit             No
    
    Opciones del disco RAM de configuraci¢n
    -------------------------------------
    Identificador           {ramdiskoptions}
    description             Ramdisk Options
    ramdisksdidevice        partition=G:
    ramdisksdipath          \boot\boot.sdi
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Paolo Enigma    6 年前

    也许这和使用查找“-”和空格一样简单。

    (?<=-\s)(\w*)
    

    活正则表达式 here . 这假定在其他地方没有其他尾随连字符。

    对于.NET使用:

     (?<=-\s+)(\w*)
    
        2
  •  2
  •   The fourth bird    6 年前

    你可以用积极的眼光 (?<= 断言左边的是一个或多个连字符 -+ 后跟一个或多个空白字符 \s+ 然后匹配一个或多个非空白字符 \S+

    (?<=-+\s+)\S+

    Lookbehind demo

    或从一开始就匹配 ^ 一个或多个连字符 + 后跟一个或多个空白字符 s+ 在一个组中捕获(您的值在组1中)一次或多次而不是空白 s+ .

    ^-+\s+(\S+)

    Group demo

        3
  •  0
  •   jurajvt    6 年前

    你可以试试这个:

    ---\n(.+?)\s{2,}
    

    https://regex101.com/r/RD5kOe/1