Description
This expression will find only the /oem/en
string if it is inside the target tag
regex: (<target>(?:(?!<\/target>).)*?)(\/oem\/en(?=\/|\"))
replace with: $1~~~~New Value~~~~~
C# code example
Input Text
<?xml version="1.0" encoding="utf-8"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"><file product-version="1.4" original="" source-language="default" target-language="default" datatype="plaintext" category="page_content"><header></header><body><trans-unit id="page_description" datatype="x-System.String" maxwidth="0" minwidth="0"><source><![CDATA[bla bla]]></source><target><![CDATA[translated bla bla]]></target></trans-unit><trans-unit id="f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8" datatype="x-System.String" resname="PublishingPageContent" maxwidth="0" minwidth="0"><source><![CDATA[<a href="/oem/en/link1">bla bla</a>]]></source><target><![CDATA[<a href="/oem/en/link1/>translated bla bla</a>]]></target></trans-unit><trans-unit id="f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8" datatype="x-System.String" resname="PublishingPageContent" maxwidth="0" minwidth="0"><source><![CDATA[<a href="/oem/en/link2">bla bla</a>]]></source><target><![CDATA[<a href="/oem/en/link2/>translated bla bla</a>]]></target></trans-unit></body></file></xliff>
Code
using System;
using System.Text.RegularExpressions;
namespace myapp
{
class Class1
{
static void Main(string[] args)
{
String sourcestring = "source string to match with pattern";
String matchpattern = @"(<target>(?:(?!<\/target>).)*?)(\/oem\/en(?=\/|\""))";
String replacementpattern = @"$1~~~~~new value~~~~~";
Console.WriteLine(Regex.Replace(sourcestring,matchpattern,replacementpattern,RegexOptions.IgnoreCase));
}
}
}
Yields
<?xml version="1.0" encoding="utf-8"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"><file product-version="1.4" original="" source-language="default" target-language="default" datatype="plaintext" category="page_content"><header></header><body><trans-unit id="page_description" datatype="x-System.String" maxwidth="0" minwidth="0"><source><![CDATA[bla bla]]></source><target><![CDATA[translated bla bla]]></target></trans-unit><trans-unit id="f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8" datatype="x-System.String" resname="PublishingPageContent" maxwidth="0" minwidth="0"><source><![CDATA[<a href="/oem/en/link1">bla bla</a>]]></source><target><![CDATA[<a href="~~~~~new value~~~~~/link1/>translated bla bla</a>]]></target></trans-unit><trans-unit id="f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8" datatype="x-System.String" resname="PublishingPageContent" maxwidth="0" minwidth="0"><source><![CDATA[<a href="/oem/en/link2">bla bla</a>]]></source><target><![CDATA[<a href="~~~~~new value~~~~~/link2/>translated bla bla</a>]]></target></trans-unit></body></file></xliff>