返回两个字符之间的文本。

3
我的正则表达式匹配一个字符串,如tab或逗号和冒号之间

(?<=\t|,)([a-z].*?)(:)

这会返回一个字符串:app_open_icon: 我想让正则表达式去掉附加的:,只返回app_open_icon
我应该如何修改这个正则表达式以排除:
3个回答

1
尝试使用正则表达式 (?<=\t|,)[a-z].*?(?=:)

const regex = /(?<=\t|,)[a-z].*?(?=:)/;
const text='Lorem ipsum dolor sit amet,app_open_icon:consectetur adipiscing...';
const result = regex.exec(text);
console.log(result);


1

您不必使用预测界定符,可以使用捕获组。

[\t,]([a-z][^:]*):
  • [\t,] 匹配制表符或逗号
  • ( 捕获 组 1
    • [a-z][^:]* 匹配范围在 a-z 的字符,后跟 0 次或多次非 : 的任意字符
  • ) 关闭组 1
  • : 字符串匹配

正则表达式演示

const regex = /[\t,]([a-z][^:]*):/;
const str = `,app_open_icon:`;
const m = str.match(regex);
if (m) {
  console.log(m[1]);
}


要仅使用环视来匹配,您可以将匹配项转换为环视,并省略捕获组1:
(?<=[\t,])[a-z][^:]*(?=:)

正则表达式演示

const regex = /(?<=[\t,])[a-z][^:]*(?=:)/;
const str = `,app_open_icon:`;
const m = str.match(regex);
if (m) {
  console.log(m[0]);
}


0

你已经通过正则表达式实现了这个功能。

正向先行断言:(?<=\t|,) 检查匹配开始前的逗号或制表符

第一个捕获组:([a-z].*?) 捕获冒号:之前和逗号,或制表符\t之后的所有内容

第二个捕获组:(:) 捕获冒号:

只需提取匹配的第一个捕获组。

检查正则表达式演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接