很抱歉在某个地方对此有答案,但是如果有答案,我的搜索技能就会使我失望。
我正在使用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脚本创建了一种解决方法,以便可以完成工作,但是寻找是否有一种方法可以仍然很有趣。 :)
答案 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" : "";