OK正则表达式问题,如何在两个字符之间提取字符,在本例中为括号.
我有一个字符串,如:word1 | {word2 | word3} | 字4
我只想得到第一个和最后一个'管道',而不是第二个在括号之间.我尝试过无数次使用负克拉和负片组的尝试,似乎无法让它发挥作用.
基本上我在JavaScript分割函数中使用此正则表达式将其拆分为包含以下内容的数组:"word1","{word2 | word3}","word4".
任何帮助将不胜感激!
Div*_*ver 27
在refiddle.com上设置为JavaScript,尝试使用此模式
/\|(?![^{]*})/g
Run Code Online (Sandbox Code Playgroud)
用这个文字
word1 | {word2 | word3 } | word 4 | word 4 | {word2 | word3 }
Run Code Online (Sandbox Code Playgroud)
这应匹配不在{}内的所有Pipe符号.
And*_*ong 16
取决于您正在使用的语言/实现,但......
\|(?![^{]*})
Run Code Online (Sandbox Code Playgroud)
这种匹配是管不接着一个},除了在一个案件{是第一位的.
这(?! ... )被称为负前瞻断言.如果我们从一个积极的先行断言开始,这将更容易理解:
\|(?=[^{]*})
Run Code Online (Sandbox Code Playgroud)
以上只匹配的管被后跟一个}而不会遇到{第一.当你通过用=a 替换时否定它,如果正面情况无法为真(也称为补语)!,则现在只能成功.