【问题标题】:Finding all XML Files containing specific strings using REGEX使用 REGEX 查找包含特定字符串的所有 XML 文件
【发布时间】:2019-08-15 04:16:17
【问题描述】:

我将 VSCode 用于 salesforce,并且在沙箱中有数百个字段集,我想使用 REGEX 以任意顺序查找包含这两个单词的所有 XML 文件:

LLC_BI__Stage__c 
LLC_BI__Status__c

我尝试过使用这些 REGEX 但它不起作用,我假设是因为字符串位于不同的行中:

(?=LLC_BI__Stage__c)(?=LLC_BI__Status__c)

^(?=.*\bLLC_BI__Stage__c\b)(?=.*\bLLC_BI__Status__c\b).*$

(.* LLC_BI__Stage__c.* LLC_BI__Status__c.* )|(.* LLC_BI__Status__c.* LLC_BI__Stage__c.*)

例如,此 XML 文件包含 2 个字符串,应返回

<displayedFields>
    <field>LLC_BI__Amount__c</field>
    <isFieldManaged>false</isFieldManaged>
    <isRequired>false</isRequired>
</displayedFields>
<displayedFields>
    **<field>LLC_BI__Stage__c</field>**
    <isFieldManaged>false</isFieldManaged>
    <isRequired>false</isRequired>
</displayedFields>
<displayedFields>
    <field>LLC_BI__lookupKey__c</field>
    <isFieldManaged>false</isFieldManaged>
    <isRequired>false</isRequired>
</displayedFields>
<displayedFields>
    **<field>LLC_BI__Status__c</field>**
    <isFieldManaged>false</isFieldManaged>
    <isRequired>false</isRequired>
</displayedFields>

【问题讨论】:

  • 在 Linux 上转到保存所有文件的文件夹:grep -l LLC_BI__Stage__c * | xargs grep -l LLC_BI__Status__c 应该会给你你想要的列表,在 Windows 上只需使用 findstr

标签: regex xml visual-studio-code


【解决方案1】:

您可以使用alternation 查找其中任何一个,并根据此post 使用[\s\S\r] 匹配任何字符,包括换行符。

如果有一个使用[\s\S\r]issue,你可以改用[\S\r\n\t\f\v ]*

(?:LLC_BI__Stage__c[\S\s\r]*LLC_BI__Status__c|LLC_BI__Status__c[\S\s\r]*LLC_BI__Stage__c)

说明

  • (?:非捕获组
    • LLC_BI__Stage__c[\S\s\r]*LLC_BI__Status__c 匹配第一部分到第二部分
    • |或者
    • LLC_BI__Status__c[\S\s\r]*LLC_BI__Stage__c 匹配第二部分直到第一部分
  • )关闭群

Regex demo 1Regex demo 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多