以下のxmlファイルを参照してください。 $ BASE_DIR、$ ENV_PREFIXなどは、Linux OSの環境変数です。私は書式$の変数の後ろに任意の文字、次に任意の文字または数字が<シンボルまで見つかるようにして、タグが閉じられているものをリストに格納したいと思います。 $ {envPrefix}がサードパーティのAPIによって後で置き換えられ、このリストで無視されるべきであることに注意してください。正規表現を使用して要件を処理する
<?xml version="1.0" encoding="UTF-8"?>
<myConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://myconfig.xsd">
<configVariable name="baseDir" type="java.lang.String">
<value>$BASE_DIR</value>
</configVariable>
<configVariable name="envPrefix" type="java.lang.String">
<value>$ENV_PREFIX</value>
</configVariable>
<configVariable name="logPath" type="java.lang.String">
<value>${baseDir}/${envPrefix}</value>
</configVariable>
<configVariable name="appName">
<value>Publish</value>
</configVariable>
<configVariable name="CUSTOM_LOG">
<value>$CUSTOM_LOG</value>
</configVariable>
<configVariable name="PUBLISH_LOG">
<value>$PUBLISH_LOG</value>
</configVariable>
<logging>
<destination type="file" maxFileBackup="16" maxFileSize="10MB"
filePath="${PUBLISH_LOG}/${appName}.log" smLogName="publish" />
<priority level="info" smLogName="publish" />
</logging>
.......
</myConfig>
String fileContent="the_file_provided_above";
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile(Pattern.quote("????What goes here">)).matcher(fileContent);
while (m.find()) {
allMatches.add(m.group());
}
私はここに行く必要のある正規表現を理解しようとしていますが、これを処理するために$の後ろにあるものについてはわかりません。私は以下のようなものを試してみました。Matcher m = Pattern.compile(Pattern.quote( "$ ENV_PREFIX"))。matcher(fileContent); \t \t一方(m.find()){ \t \t \t allMatches.add(m.group())。 \t \t} –