gpt4 book ai didi

javascript - 正则表达式在第 n 次出现的字符处剪切字符串并返回字符串的第一部分

转载 作者:行者123 更新时间:2023-11-29 10:29:22 25 4
gpt4 key购买 nike

我找到了返回字符串第二部分的案例的答案,例如:

"qwe_fs_xczv_xcv_xcv_x".replace(/([^\_]*\_){**nth**}/, ''); - 其中 nth 是出现的次数删除。

如果nth=3,以上将返回“xcv_xcv_x”

此 StackOverflow 帖子中的详细信息:Cutting a string at nth occurrence of a character

如何更改上述正则表达式以返回第一部分(即“qwe_fs_xczv”)?

最佳答案

您需要使用 end anchor($)断言结束位置。

"qwe_fs_xczv_xcv_xcv_x".replace(/(_[^_]*){nth}$/, ''); 
// --------------------^-----------^--- here

console.log(
"qwe_fs_xczv_xcv_xcv_x".replace(/(_[^_]*){3}$/, '')
)


更新:为了获得前 n 个片段,您需要使用 String#match正则表达式略有变化的方法。

"qwe_fs_xczv_xcv_xcv_x".match(/(?:(?:^|_)[^_]*){3}/)[0]

console.log(
"qwe_fs_xczv_xcv_xcv_x".match(/(?:(?:^|_)[^_]*){3}/)[0]
)
在上面的正则表达式中, (?:^|_) 有助于断言起始位置或匹配前导 _Regex explanation here .


正则表达式的另一种替代方法是 /^[^_]*(?:_[^_]*){n-1}/。最终的正则表达式如下:

/^[^_]*(?:_[^_]*){2}/

console.log(
"qwe_fs_xczv_xcv_xcv_x".match(/^[^_]*(?:_[^_]*){2}/)[0]
)

关于javascript - 正则表达式在第 n 次出现的字符处剪切字符串并返回字符串的第一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50197049/

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