javascript - RegEx for matching specific attributes and values
问题描述
I am trying to strip a huge XML file without containing all the useless information.The file will look something like this:
App_Data App="MOD" Name="Genre" Value="Series"/><App_Data App="MOD"
Name="Show_Type" Value="Series"/><App_Data App="MOD" Name="Billing_ID"
Value="10092"/><App_Data App="MOD" Name="Licensing_Window_Start"
Value="2019-05-07 00:00:00"/><App_Data App="MOD"
Name="Licensing_Window_End" Value="2019-05-13 23:59:59"/><App_Data
App="MOD" Name="Preview_Period" Value="0"/><App_Data App="MOD"
Name="Display_As_New" Value="4"/><App_Data App="MOD"
Name="Display_As_Last_Chance" Value="7"/><App_Data App="MOD"
Name="Provider_QA_Contact" Value="NBC Universal"/><App_Data App="MOD"
Name="Suggested_Price" Value="0.00"/><App_Data App="MOD"
I will need to find values for Show_Type, Licensing_Window_end, and Display_as_New
So, how can I turn my output string into something like this:
Name="Show_Type" Value="Series"
Name="Licensing_Window_End" Value="2019-05-13 23:59:59"
Name="Display_As_New" Value="4"
Currently, I have something like this:
stripText(text) {
return text.match(new RegExp("Show_Type" + "(.*)" + "/>"));
}
But this only gets the first variable. and will include some useless information such as the /> ending part.
解决方案
我认为它必须有效:
const text = `App_Data App="MOD" Name="Genre" Value="Series"/><App_Data App="MOD"
Name="Show_Type" Value="Series fasfdasdf"/><App_Data App="MOD" Name="Billing_ID"
Value="10092"/><App_Data App="MOD" Name="Licensing_Window_Start"
Value="2019-05-07 00:00:00"/><App_Data App="MOD"
Name="Licensing_Window_End" Value="2019-05-13 23:59:59"/><App_Data
App="MOD" Name="Preview_Period" Value="0"/><App_Data App="MOD"
Name="Display_As_New" Value="4"/><App_Data App="MOD"
Name="Display_As_Last_Chance" Value="7"/><App_Data App="MOD"
Name="Provider_QA_Contact" Value="NBC Universal"/><App_Data App="MOD"
Name="Suggested_Price" Value="0.00"/><App_Data App="MOD"`
const result = text.match(/[Nn]ame\="(Show_Type|Licensing_Window_End|Display_As_New)"\s+[Vv]alue\="[^"]*"/g)
console.log(result)
我不知道您将如何使用这些数据,但您可能会发现一个由对象表示的模型很有用,其中属性“name”是键,属性“values”是值的数组(我复制了字符串 shared并更改重复值以获得更好的示例):
const text = `App_Data App="MOD" Name="Genre" Value="Series"/><App_Data App="MOD"
Name="Show_Type" Value="Series"/><App_Data App="MOD" Name="Billing_ID"
Value="10092"/><App_Data App="MOD" Name="Licensing_Window_Start"
Value="2019-05-07 00:00:00"/><App_Data App="MOD"
Name="Licensing_Window_End" Value="2019-05-13 23:59:59"/><App_Data
App="MOD" Name="Preview_Period" Value="0"/><App_Data App="MOD"
Name="Display_As_New" Value="4"/><App_Data App="MOD"
Name="Display_As_Last_Chance" Value="7"/><App_Data App="MOD"
Name="Provider_QA_Contact" Value="NBC Universal"/><App_Data App="MOD"
Name="Suggested_Price" Value="0.00"/><App_Data App="MOD"
App_Data App="MOD" Name="Genre" Value="Series"/><App_Data App="MOD"
Name="Show_Type" Value="Series 2"/><App_Data App="MOD" Name="Billing_ID"
Value="10092"/><App_Data App="MOD" Name="Licensing_Window_Start"
Value="2019-05-07 00:00:00"/><App_Data App="MOD"
Name="Licensing_Window_End" Value="2020-05-13 00:59:59"/><App_Data
App="MOD" Name="Preview_Period" Value="0"/><App_Data App="MOD"
Name="Display_As_New" Value="15"/><App_Data App="MOD"
Name="Display_As_Last_Chance" Value="7"/><App_Data App="MOD"
Name="Provider_QA_Contact" Value="NBC Universal"/><App_Data App="MOD"
Name="Suggested_Price" Value="0.00"/><App_Data App="MOD"
`
const result = text.match(/[Nn]ame\="(Show_Type|Licensing_Window_End|Display_As_New)"\s+[Vv]alue\="[^"]*"/g)
const objectResult = {
show_type: [],
licensing_window_end: [],
display_as_new: [],
}
result.forEach((e)=>{
const nameAndValue = e.match(/[Nn]ame\="(Show_Type|Licensing_Window_End|Display_As_New)"\s+[Vv]alue\="([^"]*)"/)
switch (nameAndValue[1]) {
case "Show_Type":
objectResult.show_type.push(nameAndValue[2])
break;
case "Licensing_Window_End":
objectResult.licensing_window_end.push(nameAndValue[2])
break;
case "Display_As_New":
objectResult.display_as_new.push(nameAndValue[2])
break;
default:
break;
}
})
console.log(objectResult)
推荐阅读
- c# - 在 C# 中调用 Gmail 服务 API 时出现 System.Net.Http.HttpRequestException
- angular - 如何访问角度(点击)字符串中的组件变量
- apache-kafka - Kafka --> spring cloud 数据流(RabbitMQ) --> Kafka
- sql - 从 SQL Server 获取 8601 格式的日期时间
- google-apps-script - Google Script to Add-in 建议
- python - ValueError:未知损失函数:分类交叉熵。请确保将此对象传递给“custom_objects”参数
- python - Pandas .map 字典默认缺失值
- python - 如何对一个列表进行排序并重新排序另一个列表以保持相同的关系python?
- java - 枚举 - 特定接口的类型而不实现它
- javascript - 如何找到每个月的第三周?第 1 周从每月的第一个星期一开始