【问题标题】:Regex to match if a specific string between curly braces正则表达式匹配大括号之间的特定字符串
【发布时间】:2021-06-01 01:43:23
【问题描述】:

我将 css 作为字符串,如下所示

    .c8450 {
    color: #000000; font-family: TsukuMin,TsukuMin,TsukuMin,TsukuMin; font-size: 18px; line-height: 1.6em;
    }
    .c8451 {
    text-indent: -4em; text-align: left; min-width: 1.6em; border-top: solid transparent 4em;
    }
.c8451 {
    text-indent: -4em; text-align: left; min-width: 1.6em; border-top: solid transparent 4em; text-align-last:auto;
    }

如果两个花括号包含 text-align 属性但不包含 text-align-last 属性,我需要在两个花括号之间找到匹配项,因此我应该能够匹配第二组花括号,使其返回

{text-indent: -4em; text-align: left; min-width: 1.6em; border-top: solid transparent 4em;}

我可以使用 \{+([^}]+)}+ 找到花括号之间的匹配项,并使用 text-align:(.*); 找到 text-indent 属性,但我不确定如何将两者结合起来以匹配此特定条件。

【问题讨论】:

  • 你应该在这里使用 CSS 解析器,而不是纯正则表达式。

标签: regex kotlin


【解决方案1】:

试试这个

fun main() {
    val text = """
        .c8450 {
            color: #000000; font-family: TsukuMin,TsukuMin,TsukuMin,TsukuMin; font-size: 18px; line-height: 1.6em;
        }
        .c8451 {
            text-indent: -4em; text-align: left; min-width: 1.6em; border-top: solid transparent 4em;
        }
        .c8451 {
            text-indent: -4em; text-align: left; min-width: 1.6em; border-top: solid transparent 4em; text-align-last:auto;
        }
    """
    val pattern = "\\{(.|\\r?\\n)*?\\}".toRegex()
    val matches = pattern.findAll(text)
    val list: MutableList<String> = mutableListOf()
    matches.forEach { f ->
        val value = f.value
        val pe = "text-align".toRegex();
        val pne = "text-align-last".toRegex()
        
        if(pe.containsMatchIn(value) && !pne.containsMatchIn(value)){
            list.add(value)
        }
    }
    
    print(list)
}

输出

[{
        text-indent: -4em; text-align: left; min-width: 1.6em; border-top: solid transparent 4em;
}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 2014-10-31
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多