gpt4 book ai didi

javascript - 正则表达式解析带有转义字符的字符串

转载 作者:数据小太阳 更新时间:2023-10-29 05:16:30 29 4
gpt4 key购买 nike

我正在从格式化的字符串中读取信息。格式如下所示:

"foo:bar:beer:123::lol"

“:”之间的所有内容都是我想用正则表达式提取的数据。如果 : 后跟另一个 :(如“::”),则此数据必须为“”(空字符串)。

目前我正在用这个正则表达式解析它:

(.*?)(:|$)

现在我想到“:”也可能存在于数据中。所以它必须逃脱。示例:

"foo:bar:beer:\::1337"

我怎样才能改变我的正则表达式,使它也匹配“\:”作为数据?

编辑:我使用 JavaScript 作为编程语言。它似乎对复杂的正则表达式有一些限制。该解决方案也应该适用于 JavaScript。

谢谢,麦克法兰

最佳答案

var myregexp = /((?:\\.|[^\\:])*)(?::|$)/g;
var match = myregexp.exec(subject);
while (match != null) {
for (var i = 0; i < match.length; i++) {
// Add match[1] to the list of matches
}
match = myregexp.exec(subject);
}

输入:"foo:bar:beer:\\::1337"

输出:["foo", "bar", "beer", "\\:", "", "1337", ""]

你总是会得到一个空字符串作为最后一个匹配项。这是不可避免的,因为您还希望空字符串在定界符之间匹配(并且 JavaScript 中缺少后向断言)。

解释:

(          # Match and capture:
(?: # Either match...
\\. # an escaped character
| # or
[^\\:] # any character except backslash or colon
)* # zero or more times
) # End of capturing group
(?::|$) # Match (but don't capture) a colon or end-of-string

关于javascript - 正则表达式解析带有转义字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208694/

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