13 regex
我想,以取代|与OR只在不带引号的术语,如:
"this | that" | "the | other" -> "this | that" OR "the | other"
Run Code Online (Sandbox Code Playgroud)
是的,我可以拆分空间或引用,得到一个数组并迭代它,并重建字符串,但这似乎......不优雅.所以也许有一种正则表达式方法可以通过计算"前面的s 来实现这一点,|而明显奇怪的意思|是引用它甚至意味着不带引号.(注意:"如果存在至少一个偶数,则处理不会开始").
Ala*_*ore 11
确实,正则表达式无法计数,但它们可用于确定是否存在奇数或偶数.在这种情况下的技巧是检查管道后面的引号,而不是它之前的引号.
str = str.replace(/\|(?=(?:(?:[^"]*"){2})*[^"]*$)/g, "OR");
Run Code Online (Sandbox Code Playgroud)
打破这一点,(?:[^"]*"){2}匹配下一对引号(如果有的话)以及介入的非引号.在您尽可能多地完成该操作(可能为零)之后,[^"]*$消耗任何剩余的非引号,直到字符串结束.
当然,这假设文本格式正确.它也没有解决转义引号的问题,但如果你需要它,它可以.