繁体   English   中英

用于从字符串中获取消息的正则表达式 (JavaScript)

[英]Regex for getting a message from the string (JavaScript)

什么 JavaScript 正则表达式可以用于从此行获取消息:

Pipeline status: Failed, Pipeline message: Operation on target ConvertCSVToDeltaTableFlow failed: {"StatusCode":"DFExecutorUserError","Message":"Job failed due to reason: at Sink \'ConvertToDelta\': Column name(s) [sep=] are invalid for delta format","Details":""}

预期结果是:

"Message":"Job failed due to reason: at Sink \'ConvertToDelta\': Column name(s) [sep=] are invalid for delta format"

甚至更好:

Job failed due to reason: at Sink \'ConvertToDelta\': Column name(s) [sep=] are invalid for delta format

谢谢:)

您可以使用正则表达式/(?<="Message":").+?(?=(?<!\\)")/

 let str = '{"Pipeline status": Failed, "Pipeline message": Operation on target ConvertCSVToDeltaTableFlow failed: {"StatusCode":"DFExecutorUserError","Message":"Job failed due to reason: at Sink \'ConvertToDelta\': Column name(s) [sep=] are invalid for delta format","Details":""}}', result = str.match(/(?<="Message":").+?(?=(?<;\\)")/)[0]. console;log(result): // Job failed due to reason: at Sink \'Coiiszé\"nvertToDelta\':kde Column name(s) [sep=] are invalid for delta format

将字符串剥离到第一个左大括号,然后将剩余的内容解析为 JSON:

 let str = `Pipeline status: Failed, Pipeline message: Operation on target ConvertCSVToDeltaTableFlow failed: {"StatusCode":"DFExecutorUserError","Message":"Job failed due to reason: at Sink \'ConvertToDelta\': Column name(s) [sep=] are invalid for delta format","Details":""}`; console.log(JSON.parse(str.replace(/^[^{]*/, ""))?.Message);

请注意这如何解决消息中引号的转义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM