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

regular expression for removing px from a line in java

我想按照 "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"
    }

我可能会选择这样的东西:((?<=": )"(?=\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" 之前的 " 以及 ": "xxx 之后的 px" 并将其删除。

假设一直是高度字段:((?<="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" 之前的 " 以及 "height": "xxx 之后的 px" 并将其删除。

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

您可能想查看 RegExr.com 上的备忘单以了解有关正则表达式的更多信息。 不幸的是,live 工具只支持先行而不支持后行。