gpt4 book ai didi

javascript - 如何用一系列正则表达式拆分字符串并保持字符串的原始顺序?

转载 作者:行者123 更新时间:2023-11-29 20:41:11 26 4
gpt4 key购买 nike

我有一个很长的字符串,可以包含需要更改的特定文本。我如何将段落作为字符串并执行包含一系列正则表达式的字符串拆分,同时保留不需要更改的文本。

截至目前,我有一个正则表达式,用于提取需要更改的文本,但将其余部分排除在外。

var regex = /[A-Z]+-[0-9]+[\s]+specificText+[\s]+[0-9)]+[\s]+|specificText[\s]+[0-9]+/gi
var str = "KJSDHFS345 KJSDHFS345 BLAH-3242352 specificText 456 specificText 564 SAUHAUH&^% SAUHAUH&^%"
str.match(regex);

目前,我收到以下数组作为结果:

["BLAH-3242352    specificText      456    ", "specificText     564"]

但是,我正在寻找一种方法来返回这样的数组:

["KJSDHFS345  KJSDHFS345      ", "BLAH-3242352    specificText      456    ", "specificText     564", "     SAUHAUH&^%  SAUHAUH&^%"]

无论包含什么字符,如何使数组保持段落的原始顺序?

最佳答案

使用 split 可能比 match 更容易:捕获您想要的子字符串,它们将与不匹配的部分分开,同时将所有内容包含在结果数组中:

var regex = /([A-Z]+-[0-9]+[\s]+specificText+\s+[0-9)]+\s+|specificText\s+[0-9]+)/i
var str = "KJSDHFS345 KJSDHFS345 BLAH-3242352 specificText 456 specificText 564 SAUHAUH&^% SAUHAUH&^%"
console.log(str.split(regex).filter(Boolean));

(请注意,只有一个标记的字符类是多余的;您可以只使用该单个标记,在 split 时不需要全局标志)

如果您不得不使用 match ,我想一个丑陋的方法是用 <any characters which aren't the start of a match to the original pattern> 替换您的原始模式:

var regex = /[A-Z]+-[0-9]+\s+specificText+\s+[0-9)]+\s+|specificText\s+[0-9]+|(?:(?![A-Z]+-[0-9]+\s+specificText+\s+[0-9)]+\s+|specificText\s+[0-9]+).)+/gi
// ^^^^^^^ ...
var str = "KJSDHFS345 KJSDHFS345 BLAH-3242352 specificText 456 specificText 564 SAUHAUH&^% SAUHAUH&^%"
console.log(str.match(regex));

但我不推荐它 - split 方法更易于读写。

关于javascript - 如何用一系列正则表达式拆分字符串并保持字符串的原始顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55506108/

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