"this | that" OR "the | other" 是的,我可以分割空格-6ren">
gpt4 book ai didi

正则表达式:如何确定给定字符之前的字符出现的奇数/偶数?

转载 作者:行者123 更新时间:2023-12-01 00:49:25 28 4
gpt4 key购买 nike

我想仅在未引用的术语中将 | 替换为 OR,例如:

"this | that" | "the | other" -> "this | that" OR "the | other"

是的,我可以分割空格或引用,获取一个数组并遍历它,然后重建字符串,但这似乎......不雅。因此,也许有一种正则表达式方法可以通过在 " 之前计算 | s 来做到这一点,显然奇数意味着 | 被引用,甚至意味着未引用。 (注意:如果至少有一个 " ,则直到有偶数个 " 时才会开始处理)。

最佳答案

正则表达式确实不能计数,但它们可用于确定某事物的数量是奇数还是偶数。这种情况下的技巧是检查管道后面的引号,而不是它之前。

str = str.replace(/\|(?=(?:(?:[^"]*"){2})*[^"]*$)/g, "OR");

打破它, (?:[^"]*"){2}匹配下一对引号(如果有的话)以及中间的非引号。在您尽可能多地完成此操作后(可能为零), [^"]*$消耗任何剩余的非引号,直到字符串结束。

当然,这假设文本格式良好。它也没有解决转义引号的问题,但如果您需要,它可以。

关于正则表达式:如何确定给定字符之前的字符出现的奇数/偶数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179436/

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