请参阅以下xml文件。 $ BASE_DIR,$ ENV_PREFIX等是linux OS中的环境变量。我想找到格式$的变量,然后是任何字母,然后是任何字母或数字,直到<标记关闭的符号并将其存储在列表中。请注意稍后由第三方API替换$ {envPrefix}的内容,并且应在此列表中忽略。
<?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());
}
答案 0 :(得分:0)
尝试使用类似这样的东西作为正则表达式:
def symmetric(square):
final_result = []
x = 0
while x < len(square):
y = 0
row_list = []
.
.
这将匹配文字<value>(\$\w+)<\/value>
,后跟至少一个单词字符(a-z,A-Z,0-9和_)。通过在$
之后匹配单词字符,我们可以避免匹配$
元素,因为${...}
与\w
不匹配。