import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?s-i)(<User>\\s*USER_NAME\\s*<\\/User>.*?<Password>\\s*)(\\S+)(\\s*<\\/Password>)";
final String string = " <Connection type=\"Teradata\" autoCommit=\"True\">\n"
+ " <Path>Teradata\\BEDW - USER_NAME1</Path>\n"
+ " <AutoConnect>False</AutoConnect>\n"
+ " <DefaultOnStartup>False</DefaultOnStartup>\n"
+ " <Database>\n"
+ " </Database>\n"
+ " <Host>teraprd2.ca.host.com</Host>\n"
+ " <User>USER_NAME1</User>\n"
+ " <Category>F00000FF:Production</Category>\n"
+ " <Password>ENCRYPTED_PWD1</Password>\n"
+ " <WinAuth>False</WinAuth>\n"
+ " <LastConnectionDate>2019-09-11T16:32:09.1945969</LastConnectionDate>\n"
+ " <SessionMode>Teradata</SessionMode>\n"
+ " <SessionCharacterSet>UTF16</SessionCharacterSet>\n"
+ " <PortNumber>1025</PortNumber>\n"
+ " <DataEncryption>False</DataEncryption>\n"
+ " <ResponseBufferSize>1040000</ResponseBufferSize>\n"
+ " </Connection>\n"
+ " </Connections>\n"
+ " <Groups />\n"
+ "</Group>\n"
+ "<Group name=\"EFBI - USER_NAME\" description=\"\">\n"
+ " <Path>Teradata</Path>\n"
+ " <Connections>\n"
+ " <Connection type=\"Teradata\" autoCommit=\"True\">\n"
+ " <Name>USER_NAME @TERADEVL (EFBI_DEV1_USAGE_METRICS_B)</Name>\n"
+ " <Path>Teradata\\EFBI - USER_NAME</Path>\n"
+ " <AutoConnect>False</AutoConnect>\n"
+ " <DefaultOnStartup>False</DefaultOnStartup>\n"
+ " <Database>EFBI_DEV1_USAGE_METRICS_B</Database>\n"
+ " <Host>teradevl.ca.host.com</Host>\n"
+ " <User>USER_NAME</User>\n"
+ " <Category>BCCF87FF:Development</Category>\n"
+ " <Password>ENCRYPTED_PWD2</Password>\n"
+ " <WinAuth>False</WinAuth>\n"
+ " <LastConnectionDate>2019-04-30T15:41:31.3601044</LastConnectionDate>\n"
+ " <SessionMode>Teradata</SessionMode>\n"
+ " <SessionCharacterSet>UTF16</SessionCharacterSet>\n"
+ " <PortNumber>1025</PortNumber>\n"
+ " <DataEncryption>False</DataEncryption>\n"
+ " <DefaultDatabase>EFBI_DEV1_USAGE_METRICS_B</DefaultDatabase>\n"
+ " <ResponseBufferSize>1040000</ResponseBufferSize>\n"
+ " </Connection>\n";
final String subst = "$1(NEW_ENCRYPTED_PWD)$3";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html