Regex 寻找高级正则表达式替换公式

Regex 寻找高级正则表达式替换公式,regex,visual-c++,notepad++,Regex,Visual C++,Notepad++,我想做一个查找/替换代码。我使用的是记事本+,但如果它有可能的话,我几乎可以使用其他任何东西 这就是我目前正在处理的问题: Asus Zenfone 4 <DeviceId> <AndroidBoardName>EeePad <AndroidBootloader>unknown <DeviceBrand>asus <DeviceModel>WW_ZenFone <DeviceModelIdentifier>LRX21V &l

我想做一个查找/替换代码。我使用的是记事本+,但如果它有可能的话,我几乎可以使用其他任何东西

这就是我目前正在处理的问题:

Asus Zenfone 4
<DeviceId>
<AndroidBoardName>EeePad
<AndroidBootloader>unknown
<DeviceBrand>asus
<DeviceModel>WW_ZenFone
<DeviceModelIdentifier>LRX21V
<DeviceModelBoot>redhookbay
<HardwareManufacturer>asus
<HardwareModel>ASUS_T00I
<FirmwareBrand>ASUS_T00I
<FirmwareTags>release-keys
<FirmwareType>user
<FirmwareFingerprint>asus/WW_ZenFone/ASUS_T00I:5.0/LRX21V/WW_ZenFone-V7.4.4-20150831:user/release-keys
我希望这是可能的使用正则表达式和它的高级查找/替换方法。以下是我认为需要做的一切:

  • 在电话名称后添加一个换行符,并在另一个换行符后插入{
  • 找到开口<并将其拆下
  • 找到结束>并将其替换为[space]=[space]
  • 忽略开头和结尾之间的文本
  • 结束语后在单词周围加引号>
  • 在最后一个引号后添加逗号
  • 添加换行符并插入}

  • 如果我有点不知所措,请告诉我,我将开始一个接一个地复制/粘贴所有内容的手工劳动。

    这可以在记事本++中使用“替换为激活的正则表达式”来完成

    然后,您可以搜索
    (?:\G(?]*)>(.*)(?!\R\G
    匹配第一次运行中字符串的开头)或匹配任何字符(换行符除外),一次或多次并将其存储到组1中
  • \R]*)>(.*+
    -匹配一个换行符,后跟
    (存储到组2),然后是
    ,然后是任何数量的字符,直到行尾(存储到组3)

  • ((?!\r您可以分两步完成,也可以使用回调。这两个步骤在记事本++中可能不可取/不可行。使用C语言很容易完成。两步方法是查找
    ((?:]*>。(::::::(::::)+)
    替换为
    {\n$1\n}
    然后查找
    ]*)>(.
    替换
    $1=“$2”,
    回调方法使用步骤1,然后将$1传递给回调,其中字符串由
    “{\n”
    +在字符串+
    “\n}中传递的步骤2正则表达式构成
    然后返回。这些正则表达式中的每一个都用于全局查找/替换。它们可以单独执行,但必须先执行步骤1。因此,在记事本中,它是手动的,但每件事只需执行一次两个步骤,如果是一次性的,可能会更好。很奇怪,条件在替换字符串中。完全不同的地方是to嵌入代码。哇,这真是太棒了!它像一个魔咒一样工作,我再也没有比它更好的了。你花了多长时间把它组合在一起?我想你一定已经和RegEx合作多年了,能够像处理儿戏一样处理这样的事情。有什么好的来源可以帮我学习最好的东西吗s、 我很高兴你能列出每个部分的工作内容,因为这才真正帮助我理解你的工作内容和原因。:)很高兴它起到了作用。我从Jeffrey Friedls和Jeffrey Friedls的《掌握正则表达式》(Mastering Regular Expressions)一书中学到了一些东西。但对我帮助最大的肯定是参加了SO,并阅读了所有那些杰出的家伙的答案。你可以找到Notepad++(boost)和使用的regex风格的dokumentation。如果有帮助,请随意。
    Asus Zenfone 4
    {
    DeviceId = "",
    AndroidBoardName = "EeePad",
    AndroidBootloader = "unknown",
    DeviceBrand = "asus",
    DeviceModel = "WW_ZenFone",
    DeviceModelIdentifier = "LRX21V",
    DeviceModelBoot = "redhookbay",
    HardwareManufacturer = "asus",
    HardwareModel = "ASUS_T00I",
    FirmwareBrand = "ASUS_T00I",
    FirmwareTags = "release-keys",
    FirmwareType = "user",
    FirmwareFingerprint = "asus/WW_ZenFone/ASUS_T00I:5.0/LRX21V/WW_ZenFone-V7.4.4-20150831:user/release-keys",
    },