我正在寻找一个正则表达式(我可以在Javascript中实现,所以没有后向查找),它将匹配一个字符的所有出现,只要它不出现在两个其他字符之间。例如,我想匹配所有连字符,只要它们不在加号之间即可。
----- // should match.
+---+ // should not match
---+---+--- // should only match the first 3 and last 3 characters.
我已经尝试调整 this post 中使用的方法像这样:
[-]+(?![^+]*\+)+
但它不符合预期。任何帮助是极大的赞赏。
附注专门寻找REGEX解决方案。我意识到这可能不是最佳解决方案,但我特别想提高我对正则表达式的了解。
最佳答案
如果分隔符(在您的情况下是+
)总是成对出现,您可以使用:
var str = 'a-b-+-c-+-d-e'; // delimter is +
matches = str.match(/-(?=([^+]*\+[^+]*\+)*[^+]*$)/g, '');
console.log(matches); // 4 matches of `-`
这与后面有偶数个加号(可能为零)的每个连字符相匹配。
关于javascript - 正则表达式查找不在两个其他字符之间出现的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615257/