我这里有这个代码:
var fields = row.split(/regex goes here/);
我想在每次出现
时拆分行|
但不是
*|
如何编写这个简单的正则表达式。我觉得有一种不同的性格,但我现在似乎无法找到一个好的参考。
我知道我需要像|
一样逃避特殊字符\|
..但是如何添加not part?
可能我只会将标记切换为
|*
而不是
*|
而且我可以在MDN上找到这种形式 - 只有在没有y后才匹配x。
x(?!y)
我在这里测试:
在这里找到了一个很好的参考
答案 0 :(得分:2)
请勿在分隔符上split()
。只需.match()
分隔符之间的所有:
var fields = row.match(/(?:\*\||[^|])*/g);
<强>解释强>
(?: # Match either
\*\| # *|
| # or
[^|] # any character except |
)* # Repeat as needed
答案 1 :(得分:1)
您需要的是JavaScript不支持的lookbehind。
最后,JavaScript,Ruby和Tcl等版本不支持 尽管他们确实支持前瞻,但他们完全不知所措。 - http://www.regular-expressions.info/lookaround.html
你需要做某种黑客攻击。用某种独特的字符序列替换所有*|
。然后在|
上拆分,最后将这些特殊字符序列替换回*|
。
作为旁注。如果您要创建某种wiki引擎,可以尝试查找已准备好的one。