const regex = /(?ms)\<test\s(?P<tmp>.*?)\<\/test\>/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?ms)\\<test\\s(?P<tmp>.*?)\\<\\\/test\\>', 'gm')
const str = `<?xml version="1.0" encoding="UTF-8" ?>
<unitData endtime="2019-09-30T05:39:08+02:00" equipment="eq1" equipmentClass="eqc1" locale="german" operator="ADMINISTRATOR" senderID="sender1" starttime="2019-09-30T05:38:09+02:00" state="nok" unit="74375513159930675" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unitData-1.1.xsd">
<subUnitData position="1" positionType="Panel Nr." state="ok" subUnit="74375513159930675">
<test description="A10-007 7437551" name="CU102_BAY2_QR" testResultCode="passed">
<subTest name="Verbindung zum Pr³fling aufbauen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Initialisierung" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Fehlerflag lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="ID lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Sachnummer lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Trigger setzen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="ADC Abschalten" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
</test>
</subUnitData>
<subUnitData position="2" positionType="Panel Nr." state="ok" subUnit="74375513159930676">
<test description="A10-007 7437551" name="CU102_BAY2_QR" testResultCode="passed">
<subTest name="Verbindung zum Pr³fling aufbauen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Initialisierung" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Fehlerflag lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="ID lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Sachnummer lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Trigger setzen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="ADC Abschalten" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
</test>
</subUnitData>
<subUnitData position="3" positionType="Panel Nr." state="ok" subUnit="74375513159930678">
<test description="A10-007 7437551" name="CU102_BAY2_QR" testResultCode="passed">
<subTest name="Verbindung zum Pr³fling aufbauen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Initialisierung" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Fehlerflag lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="ID lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Sachnummer lesen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="Trigger setzen" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
<subTest name="ADC Abschalten" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
</test>
</subUnitData>
<subUnitData position="4" positionType="Panel Nr." state="nok" subUnit="74375513159930677">
<test description="A10-007 7437551" name="CU102_BAY2_QR" testResultCode="failed">
<subTest name="FLOAT" testPosition="unknown">
<subPositions>
<subPosition name="{27}"/>
</subPositions>
<subTestResult testResultClass="fail" testResultCode="failed"/>
</subTest>
<subTest name="Components not tested" testPosition="unknown">
<subTestResult testResultClass="pass" testResultCode="passed"/>
</subTest>
</test>
</subUnitData>
</unitData>
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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 JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions