Sam
Sam

Reputation: 487

Finding all XML Files containing specific strings using REGEX

I use VSCode for salesforce and I have hundreds of fieldsets in the sandbox, I would like to use REGEX to find all XML files that contains these 2 words in any order:

LLC_BI__Stage__c 
LLC_BI__Status__c

I have tried using these REGEX but it did not work, I am assuming because the strings are in different lines:

(?=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.*)

e.g, this XML File contains the 2 strings and should be returned

<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>

Upvotes: 0

Views: 267

Answers (1)

The fourth bird
The fourth bird

Reputation: 163517

You could use an alternation to find either one of them and according to this post use [\s\S\r] to match any character including newlines.

If there is an issue using [\s\S\r] you migh tuse [\S\r\n\t\f\v ]* instead.

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

Explanation

  • (?: Non capturing group
    • LLC_BI__Stage__c[\S\s\r]*LLC_BI__Status__c Match first part till second part
    • | Or
    • LLC_BI__Status__c[\S\s\r]*LLC_BI__Stage__c Match second part till first part
  • ) Close group

Regex demo 1 and Regex demo 2

Upvotes: 1

Related Questions