String 如何使用perl reg表达式获取字符串后的值

String 如何使用perl reg表达式获取字符串后的值,string,perl,String,Perl,我有以下字符串: {\"id\":01,\"start_time\":\"1477954800000\",\"stop_time\":\"1485817200000\",\"url\":http:://www.example.com\} 例如,我想得到start_time的值(1477954800000)。 我在中尝试了几种方法,但找不到处理字符串和值之间的特殊字符(\“:\”)的方法 例如,如果字符串类似于start\u time=1477954800000 我通过使用 start_time

我有以下字符串:

{\"id\":01,\"start_time\":\"1477954800000\",\"stop_time\":\"1485817200000\",\"url\":http:://www.example.com\}
例如,我想得到start_time的值(1477954800000)。 我在中尝试了几种方法,但找不到处理字符串和值之间的特殊字符(\“:\”)的方法

例如,如果字符串类似于start\u time=1477954800000
我通过使用

start_time\":\"(\w+)/)
我会得到它的价值。
当涉及\“:\”时,您知道如何获取值吗?

您的示例数据看起来像一个字符串化的JSON对象,如果是这种情况,您应该使用JSON解析器而不是正则表达式:

#!perl

use strict;
use warnings;

use feature qw(say);
use JSON;

my $json_string = <DATA>;
chomp($json_string);

my $json_object = decode_json $json_string;

# get the value of the start_time key
say $json_object->{start_time};
# 1477954800000

__DATA__
{"id":1,"start_time":"1477954800000","stop_time":"1485817200000","url":"http://www.example.com"}
#!perl
严格使用;
使用警告;
使用特征qw(例如);
使用JSON;
我的$json_字符串=;
chomp($json_string);
my$json_object=解码_json$json_字符串;
#获取开始时间键的值
说$json_object->{start_time};
# 1477954800000
__资料__
{“id”:1,“开始时间”:“1477954800000”,“停止时间”:“14858172000000”,“url”:http://www.example.com"}

您的示例数据看起来像一个字符串化的JSON对象,如果是这种情况,您应该使用JSON解析器而不是正则表达式:

#!perl

use strict;
use warnings;

use feature qw(say);
use JSON;

my $json_string = <DATA>;
chomp($json_string);

my $json_object = decode_json $json_string;

# get the value of the start_time key
say $json_object->{start_time};
# 1477954800000

__DATA__
{"id":1,"start_time":"1477954800000","stop_time":"1485817200000","url":"http://www.example.com"}
#!perl
严格使用;
使用警告;
使用特征qw(例如);
使用JSON;
我的$json_字符串=;
chomp($json_string);
my$json_object=解码_json$json_字符串;
#获取开始时间键的值
说$json_object->{start_time};
# 1477954800000
__资料__
{“id”:1,“开始时间”:“1477954800000”,“停止时间”:“14858172000000”,“url”:http://www.example.com"}

@Wiktor Stribizew我正在用看起来像json的Perlth编写代码。为什么不将其解码为json呢?我知道,但我想熟悉perl Regex对于这项工作来说是错误的工具。JSON是上下文的,而regex不是。@Wiktor Stribizew我用看起来像JSON的Perlth编码。为什么不将其解码为json呢?我知道,但我想熟悉perl Regex对于这项工作来说是错误的工具。JSON是上下文的,而regex不是。可能它是JSON编码数据中的文本JSON字符串(包含JSON数据的字符串)。这可以解释所有双引号前面的反斜杠。但是您的解决方案仍然有效,就在
s/\\“/”/g
;-)之后由于
\uuuuu数据
的工作方式(数据下的所有内容都已经是文字数据),我对它做了一些修改。如果上面的代码是一个函数,并且您传递了
“{\'id\”:1、\'start\'u time\”:\“1477954800000\”、\“stop\'u time\”:\“14858172000000\”、\“url\”:\”http://www.example.com\“}”
对于它,它仍然会生成正确的结果。@SREagle是否可以给出准确的命令,因为我不能确切理解你的意思。很抱歉,我对这方面很陌生。@dk13 Hunter McMillen给出了另一种(可能更好)的解决方案:只使用perl的双引号替换输入字符串,而不是我的
s//
。(
decode_json“$json_string”
而不是示例字符串的
decode_json$json_string
)“我不太确定perls和json转义序列是否相同,但这只是一个开始。可能是json编码数据中的文本json字符串(包含json数据的字符串)。这可以解释所有双引号前面的反斜杠。但是您的解决方案仍然有效,就在
s/\\“/”/g
;-)之后由于
\uuuuu数据
的工作方式(数据下的所有内容都已经是文字数据),我对它做了一些修改。如果上面的代码是一个函数,并且您传递了
“{\'id\”:1、\'start\'u time\”:\“1477954800000\”、\“stop\'u time\”:\“14858172000000\”、\“url\”:\”http://www.example.com\“}”
对于它,它仍然会生成正确的结果。@SREagle是否可以给出准确的命令,因为我不能确切理解你的意思。很抱歉,我对这方面很陌生。@dk13 Hunter McMillen给出了另一种(可能更好)的解决方案:只使用perl的双引号替换输入字符串,而不是我的
s//
。(
decode_json“$json_string”
而不是
decode_json$json_string
作为示例字符串。)“我不太确定perls和json转义序列是否相同,但这只是一个开始。