这是我的问题:我尝试提取2.0对应于集团/amountC/
的{{1}}。一个集团总是有一个" amountC"但可能没有" amountA",B或D.
所以我需要解析:/id="two"/
(我已经有正则表达式来解析数字)
解析数据的例子:
[any nb of cars or \n] bloc id="two" [any nb of cars or \n] amountC
答案 0 :(得分:0)
您没有描述使用正则表达式的上下文。如评论中所述,如果内容是JSON,您应该使用JSON解析器。不过,我会尝试回答你问的字面问题。
在大多数情况下,正则表达式在多个记录(也就是行)中都不能很好地工作。如果您从命令行运行,则可以使用awk
或sed
作为过滤器。假设内容位于名为"内容"的文件中。你可以使用以下内容:
<强> SED 强>
sed -E '1,/bloc id="two"/ { /bloc id="two"/ ! d }
/.*"amountC" :/ {
s/.*"amountC" *: *([0-9\.]+).*$/\1/
q
}' <content
sed
。删除最多bloc id="two"
的所有行(如果"amountC"
出现在同一行上)。"amountC"
。"amountC"
已经发生,我们已经完成了;退出。sed
过滤器。 <强> AWK 强>
awk 'BEGIN { Ignore=1 }
/bloc id="two"/ { Ignore=0 }
Ignore==1 { next }
/"amountC"/ {
print gensub(/.*"amountC" *: *([0-9\.]+).*/,"\\1")
quit
}
// { next }' content
awk
并初始化一个标志以忽略行。bloc id="two"
,请开始寻找&#34; amountC&#34;。bloc id="two"
之前)。bloc id="two"
,请查找&#34; amountC&#34;。