gpt4 book ai didi

javascript - 在javascript中通过正则表达式分割线?

转载 作者:数据小太阳 更新时间:2023-10-29 04:42:26 25 4
gpt4 key购买 nike

我有这样的文本结构:

1.6.1 Members................................................................ 12
1.6.2 Accessibility.......................................................... 13
1.6.3 Type parameters........................................................ 13
1.6.4 The T generic type aka <T>............................................. 13

我需要创建 JS 对象:

{ 
num:"1.6.1",
txt:"Members"
},
{
num:"1.6.2",
txt:"Accessibility"
} ...

这不是问题。

问题是我想通过正前瞻的正则表达式拆分来提取值:

Split via the first time you see that next character is a letter

enter image description here

我尝试了什么:

'1.6.1 Members........... 12'.split(/\s(?=(?:[\w\. ])+$)/i)

这工作正常:

["1.6.1", "Members...........", "12"] // I don't care about the 12.

但是如果我有 2 个或更多单词:

'1.6.3 Type parameters................ 13'.split(/\s(?=(?:[\w\. ])+$)/i)

结果是:

["1.6.3", "Type", "parameters................", "13"]//我还是不不关心 13。

我当然可以加入他们,但我希望这些词在一起。

问题:

我怎样才能增强我的正则表达式而不是拆分单词?

期望的结果:

["1.6.3", "类型参数"]

["1.6.3", "Type parameters........"]//稍后我会删除额外内容

["1.6.3", "Type parameters........13"]//稍后我会删除额外内容

注意

我知道我可以通过“”或其他更简单的解决方案进行拆分,但我正在寻求(纯知识)增强我的解决方案它使用积极的先行拆分

Full online example :

nb2:

文本中间也可以包含大写字母。

最佳答案

你可以使用这个正则表达式:

/^(\d+(?:\.\d+)*) (\w+(?: \w+)*)/gm

然后使用匹配组 #1 和匹配组 #2 获得所需的匹配项。

Online Regex Demo

更新:对于 String#split,您可以使用此正则表达式:

/ +(?=[A-Z\d])/g

Regex Demo

更新 2:随着章节名称中也可能出现大写字母,需要更复杂的正则表达式:

var re = /(\D +(?=[a-z]))| +(?=[a-z\d])/gmi; 
var str = '1.6.3 Type Foo Bar........................................................ 13';
var m = str.split( re );
console.log(m[0], ',', m.slice(1, -1).join(''), ',', m.pop() );

//=> 1.6.3 , Type Foo Bar........................................................ , 13

关于javascript - 在javascript中通过正则表达式分割线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com