我有一個問題需要識別這種模式:
"series":[{
"name":"Some variable thing",
"data":[,,,]}
我關心的是換行符,“一些可變的東西”將是任意長度,“資料”括號中的逗號數量將是可變的。
也許我可以通過幾個小時的努力來解決這個問題,但也許這里有人可以給我一個開始。
編輯
這是生成的 HTML 檔案的截斷示例:
<!DOCTYPE html>
<html><body><div class="main-section"></div><script>var options = {
"chart":{
"id":"ChartID-qn5g8ay9",
"height":"350px",
"type":"bar",
"stacked":true},
"title":{
"text":"Fictional Books Sales"},
"legend":{
"show":true,
"position":"top"},
"plotOptions":{
"bar":{
"horizontal":true}},
"dataLabels":{
"enabled":true,
"offsetX":-6,
"style":{
"fontSize":"12px"}},
"series":[{
"name":"Tank Picture",
"data":[,,,,,,]},{
"name":"Bucket Slope",
"data":[53,32,33,52,13,43,32]}],
"xaxis":{
"categories":["2008","2009","2010","2011","2012","2013","2014"]}}
var chart = new ApexCharts(document.querySelector('#ChartID-qn5g8ay9'),
options
);
chart.render();
請注意,將有包含在檔案中的圖表數量可變的,但我只關注替代一審"data":[,,,,,,]},{后面的每個實體"series":[{有"data":[0,,,,,,]},{,其中陣列成員(逗號)的數量是可變的。
uj5u.com熱心網友回復:
鑒于混合的資料格式在你的輸入(HTML,JavaScript的,JSON),這使得嵌入式JSON資料挑戰的提取和選擇性修飾,一個正則運算式的解決方案確實是最簡單的可能:
使用基于正則運算式的-replace運算子:
(Get-Content -Raw file.htm) -replace `
'(?<="series"\s*:\s*\[\{\s*"name"\s*:\s*"[^"] ",\s*"data":\s*\[),',
'0,'
Get-Content-Raw將輸入檔案作為一個整體讀取,作為單個多行字串,從而實作跨行匹配。正向后視斷言 (
(?<=...)) 用于匹配,感興趣的文本之前;然后將后者替換為0,為了健壯性,
\s*插入以匹配不同數量的空格(如果有),在它們在 JSON 字串中沒有語法意義的地方,以防止偶然的格式變化。
要以互動方式試驗正則運算式,請參閱此 regexstorm.net 頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/345214.html
