如何在(非值)后接(值)上进行拆分

How to split on ( not a value ) followed by ( a value )?

本文关键字:拆分 后接 非值      更新时间:2023-09-26

我在这里有这个代码:

var fields = row.split(/regex goes here/);

我想在每次出现时拆分行

|

但不是

*|

如何编写这个简单的正则表达式。我以为这不是什么性格,但我现在似乎找不到一个好的推荐人。

我知道我需要像这个'|一样逃离特殊字符|。。但是我该如何添加not部分呢?

我可能会将我的标记切换到

|*

而不是

*|

我可以在MDN上找到这个表格-只有在后面没有y的情况下才匹配x。

x(?!y)

我在这里测试:

http://www.regexpal.com/

在这里找到了一个很好的参考

http://www.regular-expressions.info/reference.html

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp#Special_characters_in_regular_expressions

不要在分隔符上使用split()。仅.match()分隔符之间的所有

var fields = row.match(/(?:'*'||[^|])*/g);

解释:

(?:    # Match either
 '*'|  # *|
|      # or
 [^|]  # any character except |
)*     # Repeat as needed

您需要的是JavaScript不支持的lookbacking。

最后,JavaScript、Ruby和Tcl等风格不支持尽管他们确实支持前瞻性。—http://www.regular-expressions.info/lookaround.html

你需要做一些破解。用某种独特的字符序列替换所有的*|。然后在|上进行拆分,最后将那些特殊的字符序列替换回*|

作为旁注。如果你正在创建某种wiki引擎,你可以尝试找到一个现成的。