According you question and sample there is what you want.
The idea is:
Get the string before PermanentWordChangeWord..
The rule for this is (.*)PermanentWordChangeWord\.
Get the value after PermanentWordChangeWord. but before .(dot).
The rule for this is ([^\..]*)
this mean match all but without .(dot)
var text = "xxxPermanentWordChangeWord.myname.city.year.age";
var pattern = @"(.*)PermanentWordChangeWord\.([^\..]*)";
Regex reg = new Regex(pattern, RegexOptions.IgnoreCase);
Match match = reg.Match(text);
var output = string.Empty;
if (match.Success)
{
var group0 = match.Groups[0].Value; // This value is: xxxPermanentWordChangeWord.myname.city.year.age
var group1 = match.Groups[1].Value; //This value is: xxx
var group2 = match.Groups[2].Value; //This value is: myname
output = group1 + group2;
}