用于从java中的行中删除px的正则表达式

时间:2017-04-11 20:33:42

标签: java regex regex-lookarounds

我想重写"height": "208px""height": 208行的每一件事。条目的高度可能不同,

我已经能够以编程方式执行此操作,但是希望使用正则表达式来减少代码,而这些代码在很大程度上是不成功的。 你能帮我提出一个正则表达式吗?

例如:

"elements": [
    {
        "minHeight": 64,
        "maxHeight": 1028,
        "height": "208px",
        "minWidth": 48,
        "maxWidth": 1028,
        "defaultWidth": 512,
        "widgetid": "5892295a3ba871c00a000202"
    }

应改写为:

"elements": [
    {
        "minHeight": 64,
        "maxHeight": 1028,
        "height": 208,
        "minWidth": 48,
        "maxWidth": 1028,
        "defaultWidth": 512,
        "widgetid": "5892295a3ba871c00a000202"
    }

1 个答案:

答案 0 :(得分:2)

我可能会选择:((?<=": )"(?=\d{1,4}px"))|((?<=": "\d{1,4})px")

public static removePX( final String text ) {
    final String regex = "((?<=\": )\"(?=\\d{1,4}px\"))|((?<=\": \"\\d{1,4})px\")";
    return text.replaceAll( regex, "" );
}

这将在"":以及xxxpx"之后px"查找": "xxx并删除它。

假设它始终是高度字段:((?<="height": )"(?=\d{1,4}px"))|((?<="height": "\d{1,4})px")

public static removePX( final String text ) {
    final String regex = "((?<=\"height\": )\"(?=\\d{1,4}px\"))|((?<=\"height\": \"\\d{1,4})px\")";
    return text.replaceAll( regex, "" );
}

这将在""height":以及xxxpx"之后px"查找"height": "xxx并删除它。

(?<=x)称为“lookbehind”,(?=x)称为“lookahead”。

您可以查看RegExr.com上的Cheatsheet,了解有关正则表达式的更多信息。 不幸的是,实时工具仅支持前瞻,但不支持外观。