import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\$([^\\{(\"\\\\'\\/])([a-zA-Z0-9_]*)([^\\}\\/ \\t'\"\\n.\\]:]*)";
final String string = "#!/usr/bin/env bash\n\n"
+ "# version 0.1.0\n\n"
+ "function generate_secret()\n"
+ "{\n"
+ " ( umask 0077 ; dd if=/dev/urandom bs=24 count=1 2>/dev/null | base64 -w0 > \"$1\" )\n"
+ "}\n\n"
+ "if [[ -n $SRS_DOMAINNAME ]]\n"
+ "then\n"
+ " NEW_DOMAIN_NAME=\"$SRS_DOMAINNAME\"\n"
+ "elif [[ -n $OVERRIDE_HOSTNAME ]]\n"
+ "then\n"
+ " NEW_DOMAIN_NAME=\"${OVERRIDE_HOSTNAME#*.}\"\n"
+ "elif [[ -n $DOMAINNAME ]]\n"
+ "then\n"
+ " NEW_DOMAIN_NAME=\"$DOMAINNAME\"\n"
+ "else\n"
+ " NEW_DOMAIN_NAME=$(hostname -d)\n"
+ "fi\n\n"
+ "sed -i -e \"s/localdomain/${NEW_DOMAIN_NAME}/g\" /etc/default/postsrsd\n\n"
+ "POSTSRSD_SECRET_FILE='/etc/postsrsd.secret'\n"
+ "POSTSRSD_STATE_DIR='/var/mail-state/etc-postsrsd'\n"
+ "POSTSRSD_STATE_SECRET_FILE=\"${POSTSRSD_STATE_DIR}/postsrsd.secret\"\n\n"
+ "if [[ -n $SRS_SECRET ]]\n"
+ "then\n"
+ " ( umask 0077 ; echo \"$SRS_SECRET\" | tr ',' '\\n' > \"$POSTSRSD_SECRET_FILE\" )\n"
+ "else\n"
+ " if [[ $ONE_DIR -eq 1 ]]\n"
+ " then\n"
+ " if [[ ! -f $POSTSRSD_STATE_SECRET_FILE ]]\n"
+ " then\n"
+ " install -d -m 0775 \"$POSTSRSD_STATE_DIR\"\n"
+ " generate_secret \"$POSTSRSD_STATE_SECRET_FILE\"\n"
+ " fi\n\n"
+ " install -m 0400 \"$POSTSRSD_STATE_SECRET_FILE\" \"$POSTSRSD_SECRET_FILE\"\n"
+ " elif [[ ! -f $POSTSRSD_SECRET_FILE ]]\n"
+ " then\n"
+ " generate_secret \"$POSTSRSD_SECRET_FILE\"\n"
+ " fi\n"
+ "fi\n\n"
+ "if [[ -n $SRS_EXCLUDE_DOMAINS ]]\n"
+ "then\n"
+ " sed -i -e \"s/^#\\?SRS_EXCLUDE_DOMAINS=.*$/SRS_EXCLUDE_DOMAINS=$SRS_EXCLUDE_DOMAINS/g\" /etc/default/postsrsd\n"
+ "fi\n\n"
+ "/etc/init.d/postsrsd start\n";
final String subst = "${$1$2$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