var keyList = new[] { "AccountKey", "PrivateKey", "APIKey", "DefectiveKeyGracefulExpiration" };
var multiplePatternMatching = string.Format("({0})", string.Join("|", keyList));
var keyRegex = string.Format(@"(?s)<([\s<]?{0}[\s<]*)>.*?</\1>", multiplePatternMatching);
And I have another regex:
var passwordRegex = @"(?si)<([^\s<]*password[^\s<]*)>.*?</\1>";
How to combine keyRegex and passwordRegex into one regex? I known that I need to use | but I don't know how. 
I'm trying to use | like this:
var keyOrPasswordRegex = string.Format( @"(?s)<([\s<]?{0}[\s<]*)>.*?</\1>|(?si)<([^\s<]*password[^\s<]*)>.*?</\2>", multiplePatternMatching);
but it's doesnt work
Input:
<job xmlns:i="..." xmlns="...">
<password>asdfasdf</password>
<adminPassword>asd</adminPassword>
<AccountKey>asd</AccountKey>
<AccountKeyZ>asd</AccountKeyZ>
...</job>
Actual result:
<job xmlns:i="..." xmlns="...">
 <></>
 <></>
<AccountKey></AccountKey>
<AccountKeyZ>asd</AccountKeyZ>
...</job>
Expected result:
<job xmlns:i="..." xmlns="...">
<password></password>
<adminPassword></adminPassword>
<AccountKey></AccountKey>
<AccountKeyZ>asd</AccountKeyZ>
...</job>
 
    