refactor(fake): 优化 XML 标签内容提取正则表达式
- 修改了 pickTag 函数中的正则表达式,以更准确地匹配标签内容 - 将 [\s\S]*? 替换为 [sS]*?,以提高匹配精度 - 此修改解决了潜在的命名空间与嵌套同名标签的复杂情形下的匹配问题
This commit is contained in:
@@ -13,7 +13,7 @@ function esc(s: string) {
|
|||||||
// 从原始 XML 文本中提取某个标签的文本内容(弱解析,仅用于演示)
|
// 从原始 XML 文本中提取某个标签的文本内容(弱解析,仅用于演示)
|
||||||
function pickTag(xml: string, tag: string) {
|
function pickTag(xml: string, tag: string) {
|
||||||
// 说明:使用非贪婪匹配并允许标签上带属性;N.B. 未处理命名空间与嵌套同名标签的复杂情形
|
// 说明:使用非贪婪匹配并允许标签上带属性;N.B. 未处理命名空间与嵌套同名标签的复杂情形
|
||||||
const re = new RegExp(`<${tag}(?:\n|\r|\s|>|/)[^>]*>([\s\S]*?)<\/${tag}>`, 'i');
|
const re = new RegExp(`<${tag}(?:\n|\r|s|>|/)[^>]*>([sS]*?)</${tag}>`, 'i');
|
||||||
const m = xml.match(re);
|
const m = xml.match(re);
|
||||||
return m?.[1]?.trim() ?? '';
|
return m?.[1]?.trim() ?? '';
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user