Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript正则表达式拆分此文本?_Javascript_Regex_Split_Subtitle_Video Subtitles - Fatal编程技术网

如何使用JavaScript正则表达式拆分此文本?

如何使用JavaScript正则表达式拆分此文本?,javascript,regex,split,subtitle,video-subtitles,Javascript,Regex,Split,Subtitle,Video Subtitles,我想拆分这段文字。我正试图用JavaScript正则表达式来实现这一点 (1) 真的没有。(2) 嗯哼。(3) 看哪,王子(4)是他天性中的关键人物,畏缩在他生命中女性的怜悯之下。(5) 看我,也许你想和我的女儿们聊天,教她们一些组合。(6) 毫无疑问你是最好的老师,陛下。(7) 例如,是我女儿教我现代世界的语言 我想把它解析成几组片段。我正在寻找这些结果之一 [ [1,“真的没有。”], [2,“嗯嗯”。], [3,“看,王子”], ] [ {id:1,文本:“真的没有。”}, {id:2,文

我想拆分这段文字。我正试图用JavaScript正则表达式来实现这一点

(1) 真的没有。(2) 嗯哼。(3) 看哪,王子(4)是他天性中的关键人物,畏缩在他生命中女性的怜悯之下。(5) 看我,也许你想和我的女儿们聊天,教她们一些组合。(6) 毫无疑问你是最好的老师,陛下。(7) 例如,是我女儿教我现代世界的语言

我想把它解析成几组片段。我正在寻找这些结果之一

[
[1,“真的没有。”],
[2,“嗯嗯”。],
[3,“看,王子”],
]
[
{id:1,文本:“真的没有。”},
{id:2,文本:“嗯哼。”},
{id:3,文本:“看,王子”},
]
我使用这种模式

/\([0-9])\{1,3}(+?)\(/g
你能帮我一下吗?我应该用什么样的方式来正确地分割文本


提前感谢您!

您可以使用javascript中的regex和string.matchAll函数来执行您想要的操作

const str=`(1)真的不。(2)嗯嗯。(3)看,王子(4)是他天生的关键,在他生命中的女人的怜悯下畏缩。(5)看我,也许你想和我的女儿们聊天,教她们一些组合。(6)毫无疑问,你是最好的老师,陛下。(7)例如,是我女儿教我现代世界的语言;
让数组=[…str.matchAll(/\([0-9]+)\)\s*(*?)\s*(?=$\\()/g)].map(a=>[+a[1],a[2]]

console.log(array)
您可以在javascript中使用regex和string.matchAll函数来执行您想要的操作

const str=`(1)真的不。(2)嗯嗯。(3)看,王子(4)是他天生的关键,在他生命中的女人的怜悯下畏缩。(5)看我,也许你想和我的女儿们聊天,教她们一些组合。(6)毫无疑问,你是最好的老师,陛下。(7)例如,是我女儿教我现代世界的语言;
让数组=[…str.matchAll(/\([0-9]+)\)\s*(*?)\s*(?=$\\()/g)].map(a=>[+a[1],a[2]]

log(数组)
而不是匹配
您可以断言它或字符串的结尾

这部分
\){1,3}
表示重复结束括号1-3次

如果要匹配1-3位数字:

\(([0-9]+)\)\s*(.*?)\s*(?=$|\()
  • \(
    匹配
  • ([0-9]+)
    组1中捕获1+个数字(由代码中的
    m[1]
    表示)
  • \)
    匹配
  • \s*
    匹配可选空白字符
  • (.*)
    组2中捕获尽可能少的字符(在代码中用
    m[2]
    表示)
  • \s*
    匹配可选空格chas
  • (?=$\124;\()
    断言字符串的结尾或右侧的

const regex=/\([0-9]+)\\s*(*?)\s*(?=$\124;\()/g;
const str=`(1)真的不。(2)嗯哼。(3)瞧,王子(4)是他天生的关键,在他生命中的女人的怜悯下畏缩。(5)看我,也许你想和我的女儿们聊天,教她们一些组合。(6)毫无疑问,你是最好的老师,陛下。(7)例如,是我女儿教我现代世界的语言;

console.log(Array.from(str.matchAll(regex),m=>[m[1],m[2]]);
而不是匹配
可以断言它或字符串的结尾

这部分
\){1,3}
表示重复结束括号1-3次

如果要匹配1-3位数字:

\(([0-9]+)\)\s*(.*?)\s*(?=$|\()
  • \(
    匹配
  • ([0-9]+)
    组1中捕获1+个数字(由代码中的
    m[1]
    表示)
  • \)
    匹配
  • \s*
    匹配可选空白字符
  • (.*)
    组2中捕获尽可能少的字符(在代码中用
    m[2]
    表示)
  • \s*
    匹配可选空格chas
  • (?=$\124;\()
    断言字符串的结尾或右侧的

const regex=/\([0-9]+)\\s*(*?)\s*(?=$\124;\()/g;
const str=`(1)真的不。(2)嗯哼。(3)瞧,王子(4)是他天生的关键,在他生命中的女人的怜悯下畏缩。(5)看我,也许你想和我的女儿们聊天,教她们一些组合。(6)毫无疑问,你是最好的老师,陛下。(7)例如,是我女儿教我现代世界的语言;
console.log(Array.from(str.matchAll(regex),m=>[m[1],m[2]]);
…一种基于以及使用和

//请参阅[https://regex101.com/r/r39BoJ/1]
常量regX=(/\(?\d+)\s*(?*?)\s*(?=$\()/g);
const text=“(1)真的不。(2)嗯嗯。(3)看,王子(4)是他天生的关键,在他生命中的女人的怜悯下畏缩。(5)看我,也许你想和我的女儿们聊天,教她们一些组合。(6)毫无疑问,你是最好的老师,陛下。(7)例如,是我女儿教我现代世界的语言。”
console.log([
…text.matchAll(regX)
].地图(
({groups:{id,text}})=>({id:Number(id,text})
)
);
.as控制台包装{min height:100%!important;top:0;}
…一种基于以及基于使用和

//请参阅[https://regex101.com/r/r39BoJ/1]
常量regX=(/\(?\d+)\s*(?*?)\s*(?=$\()/g);
const text=“(1)真的不。(2)嗯哼。(3)瞧,王子(4)是他天性中的关键,在他生命中的女人的怜悯下畏缩。(5)看我,也许你想和我的女儿们聊天,教她们一些组合。(6)毫无疑问,你是最好的老师,陛下