using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\s*<(attribute|measure)(?=.+?id=""(\w+)"").+?>(?=.+?columnName=""(?:4Z\w+_)?(\w+)"").*?<\/\1>";
string substitution = @"\3,\2\n";
string input = @" <attribute id=""VENDOR_NUMBER"" order=""1"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Vendor""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0VENDOR""/>
</attribute>
<attribute id=""VENDOR_NAME"" order=""2"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Vendor Name (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0VENDOR___T""/>
</attribute>
<attribute id=""COMPANY_CODE"" order=""3"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Company Code""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0COMP_CODE""/>
</attribute>
<attribute id=""COMPANY_CODE_TXT"" order=""4"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Company Code (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0COMP_CODE___T""/>
</attribute>
<attribute id=""CREATED_BY"" order=""5"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Created By""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0CREATEDBY""/>
</attribute>
<attribute id=""DATE_CREATED_TXT"" order=""6"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Date Created (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0CREATEDON""/>
</attribute>
<attribute id=""DOCUMENT_TYPE"" order=""8"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Document Type""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0DOCTYPE""/>
</attribute>
<attribute id=""DOCUMENT_CATEGORY"" order=""9"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Document Category""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0DOC_CAT""/>
</attribute>
<attribute id=""DOCUMENT_CURRENCY"" order=""10"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Document Currency""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0DOC_CURRCY""/>
</attribute>
<attribute id=""DOCUMENT_CUR_TXT"" order=""11"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Document Currency (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0DOC_CURRCY___T""/>
</attribute>
<attribute id=""DOCUMENT_DATE_TXT"" order=""12"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Document Date (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0DOC_DATE""/>
</attribute>
<attribute id=""PO_DOCUMENT_NUMBER"" order=""14"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Document Number""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0DOC_NUM""/>
</attribute>
<attribute id=""INCOTERMS_1"" order=""15"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Incoterms Part 1""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0INCOTERMS""/>
</attribute>
<attribute id=""INCOTERMS_1_TXT"" order=""16"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Incoterms Part 1 (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0INCOTERMS___T""/>
</attribute>
<attribute id=""INCOTERMS_2"" order=""17"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Incoterms Part 2""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0INCOTERMS2""/>
</attribute>
<attribute id=""INVOICE_PARTY"" order=""18"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Invoicing Party""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0INV_PARTY""/>
</attribute>
<attribute id=""INVOICE_PARTY_TXT"" order=""19"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Invoicing Party (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0INV_PARTY___T""/>
</attribute>
<attribute id=""MODE_OF_TRANSPORTATION"" order=""20"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Mode of Transport""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0OI_MOT""/>
</attribute>
<attribute id=""ORIGIN_COUNTRY"" order=""21"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Country of Origin""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0OI_OLAND1""/>
</attribute>
<attribute id=""ORGIN_REGION_OR_STATE"" order=""22"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Region or State of Origin""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0OI_OREGIO""/>
</attribute>
<attribute id=""PAYMENT_TERMS"" order=""23"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Terms of Payment""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0PMNTTRMS""/>
</attribute>
<attribute id=""PAYMENT_TERMS_TXT"" order=""24"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Terms of Payment (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0PMNTTRMS___T""/>
</attribute>
<attribute id=""PURCHASING_ORG"" order=""25"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Purchasing Organization""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0PURCH_ORG""/>
</attribute>
<attribute id=""PURCHASING_ORG_TXT"" order=""26"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Purchasing Organization (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0PURCH_ORG___T""/>
</attribute>
<attribute id=""PURCHASING_GROUP"" order=""27"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Purchasing Group""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0PUR_GROUP""/>
</attribute>
<attribute id=""PURCHASING_GROUP_TXT"" order=""28"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Purchasing Group (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0PUR_GROUP___T""/>
</attribute>
<attribute id=""DESTINATION_COUNTRY"" order=""29"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Destination Country""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0RECIPCNTRY""/>
</attribute>
<attribute id=""DESTINATION_COUNTRY_TXT"" order=""30"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Destination Country (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0RECIPCNTRY___T""/>
</attribute>
<attribute id=""SUPPLYING_PLANT"" order=""31"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Supplying Plant""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0SUPP_PLANT""/>
</attribute>
<attribute id=""SUPPLYING_PLANT_TXT"" order=""32"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Supplying Plant (Text)""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0SUPP_PLANT___T""/>
</attribute>
<attribute id=""RELEASE_IND"" order=""33"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Release Indicator: Purchasing Document""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_FRGKE""/>
</attribute>
<attribute id=""REL_NOT_COMPLETLY_EFFECTED"" order=""34"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Release Not Yet Completely Effected""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_FRGRL""/>
</attribute>
<attribute id=""YOUR_REFERENCE"" order=""35"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Your Reference""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_IHREZ""/>
</attribute>
<attribute id=""OUR_REFERENCE"" order=""36"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Our Reference""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""ZP_UNSEZ""/>
</attribute>
<attribute id=""EXCH_RATE_FIXED_INDICATOR"" order=""37"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Indicator: Fixing of Exchange Rate""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_KUFIX""/>
</attribute>
<attribute id=""PO_PROCESSING_STATUS"" order=""38"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Purchasing Document Processing State""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_PROCSTAT""/>
</attribute>
<attribute id=""TOT_VALUE_AT_FULL_PO_APPROVAL"" order=""39"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Total Value at Time of Release""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_RLWRT""/>
</attribute>
<attribute id=""VAT_REGISTRATION_NUMBER"" order=""40"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""VAT Registration Number""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_STCEG""/>
</attribute>
<attribute id=""COLLECTIVE_NUMBER"" order=""41"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Collective Number""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""4ZMMCP012_SUBMI""/>
</attribute>
<attribute id=""RELEASE_STATUS"" order=""42"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Release Status""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""ZP_FRGZU""/>
</attribute>
<attribute id=""RELEASE_GROUP"" order=""43"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Release Group""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""ZRELGRP""/>
</attribute>
<attribute id=""RELEASE_STRATEGY"" order=""44"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Release Strategy""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""ZRELSTR""/>
</attribute>
<attribute id=""EXCHANGE_RATE"" order=""45"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""Exchange Rate for Pricing & Statistics""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""0EXCHG_RATE""/>
</attribute>
<attribute id=""__AP_CHECK_INT"" order=""47"" attributeHierarchyActive=""false"" displayAttribute=""false"" transparentFilter=""false"">
<descriptions defaultDescription=""__AP_CHECK_INT""/>
<keyMapping columnObjectName=""PO_HEADER_UNION"" columnName=""__AP_CHECK_INT""/>
</attribute>
<measure id=""ROWCOUNT"" order=""46"" aggregationType=""sum"" measureType=""simple"">
<descriptions defaultDescription=""Number of Records""/>
<measureMapping columnObjectName=""PO_HEADER_UNION"" columnName=""1ROWCOUNT""/>
</measure>";
RegexOptions options = RegexOptions.Singleline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx