问题:
所以我想说我有以下字符串:
const myList = [{id:0,name:'Joe'},{id:1,name:'Sally'},{id:2,name:'Chris'},{id:3,name:'Tiffany'},{id:4,name:'Kerry'}];
const slice = (arr, num) => [...arr.slice(num), ...arr.slice(0, num)];
console.log(slice(myList, 2));
我正在尝试使用regex.replace删除<p><span style=\"font-weight:bold;\">Description:</span>Thomas is currently
developing a enterprise resource management course for Pluralsight </p>
通常,开始标记和结束标记都不会出现,因此这两者都必须是可选的。它们也不会总是跨越。我唯一可以保证的是“描述:”这个词会出现。
我尝试了什么:
这是我能得到的尽可能接近:
<span style=\"font-weight:bold;\">Description:</span>
不幸的是,起始捕获组也在抓取起始标签。我需要这样做,以便永远不会超过1个开始或结束标记。
当我在a:
中使用它时(?:<.*>)?Description:(?:<\/.*>)?
我正在被遣返
Regex.Replace(text, @"(?:<.*>)?Description:(?:<\\/.*>)?", "")
带有不应捕获的结束范围标记,并且缺少起始标记...
修改 虽然类似于@kblok发布的帖子,但我只想删除第一个周围的标签,如果它存在的话。这个主题是关于删除所有周围的标签。因此我删除p标签的问题
答案 0 :(得分:1)
假设您不必担心引用尖括号,可以使用
(?:<[^<]*>)?Description:(?:<\/[^<]*>)?
改进模式以强制开始/结束标记名称匹配及仅在描述之外,还删除描述:当标记不存在时。
(?:(?<open><)(?<start>[^ >]+)[^<>]*>)?Description:\k<open>\/?\k<start>>|Description:
答案 1 :(得分:0)
此模式明确排除了var PrinterPath = `\\\\${PrintServer}\\${Printer}`;
代码。
<p>
这个相同,但对匹配开始和结束标签更严格。它还允许标签之间的空白
(?:<(?!p>|/)[^<>]*>)?Description:(?:</[^<>]*>)?
考虑到VDWWD的警告,即使这个丑陋的事情可能有点天真,考虑到所有可能的HTML格式变化,但它至少应该与您所描述的格式良好的简单案例相匹配。