使用正则表达式处理需求

时间:2016-08-30 17:53:21

标签: regex

请参阅以下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());
            }

1 个答案:

答案 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不匹配。