使用基于正则条件的RegEx选择行,但排除基于负数的某些行

时间:2018-08-01 18:23:50

标签: regex perl ultraedit

很抱歉在某个地方对此有答案,但是如果有答案,我的搜索技能就会使我失望。

我正在使用UltraEdit,我需要从某些JSON模式中删除一些行,以便于比较它们。

因此,给出以下内容:

"PaymentMethod": {
               "$id": "/properties/PaymentMethod",
                "items": {
                    "$ref": "PaymentMethod.json"
                },
                "type": "array"
            }

使用此RegEx:

^.*\".*\"\: \".*$\r\n

选择这些行:

"$id": "/properties/PaymentMethod",
"$ref": "PaymentMethod.json"
"type": "array"

我需要做的是跳过$ ref行。

我试图通过选择标准以各种方式获得否定的环视效果,以便以各种方式使用(?!json)。

此操作的目的是删除选定的行。

感谢您的帮助。

更新: 为了明确起见,我想删除一些与我的Regex查找条件匹配的行,但是我不想删除$ ref行。 因此,我希望找到一种相对简单的方法,在UltraEdit中使用直接的perl regex。

我已经使用Python脚本创建了一种解决方法,以便可以完成工作,但是寻找是否有一种方法可以仍然很有趣。 :)

3 个答案:

答案 0 :(得分:1)

不要编写自己的损坏的解析器;使用现有的。

use Cpanel::JSON::XS qw( decode_json );

my $json_utf8      = '...';
my $data           = decode_json($json_utf8);
my $payment_method = $data->{PaymentMethod};
my $id             = $payment_method->{'$id'};
my $item           = $payment_method->{items}{'$ref'};
my $type           = $payment_method->{type};

答案 1 :(得分:0)

如果您不想在引号后加上import numpy as np import pandas as pd from patsy import dmatrix df = pd.DataFrame({'x1': np.arange(5), 'x2': np.arange(5)}) dmatrix("~x1+x2.diff()", df)

$ref

在此处查看:https://regex101.com/r/yxTwck/1

或在行末根据^.*\"(?!\$ref).*\"\: \".*$\r\n 排除:

.json"

还要注意,您使用的是贪婪量词(^.*\".*\"\: \".*(?<!\.json")$\r\n .*)。如果您的想法是让第一个.*?停在第一个.*上,则您可能应该使用"来防止换行或[^\n"]*被消耗。例如,您的正则表达式匹配"

答案 2 :(得分:0)

使用JSON模块直接操作数据将是更可靠的解决方案,但是编辑JSON文件的麻烦而麻烦的方法是在命令行上运行它。

同样,这不是操作JSON的好方法,但它可能适合您的特殊情况。

myVar = "myString is" + 1 === 1 ? " really true" : "";