2010-05-03 150 views

回答

4

它拆分串上|但只有当其随后在[a-zA-Z0-9_]炭和=>

实施例:

它将在|

分裂a|b=>它不会在分割a|b|

7

正则表达式被包含在斜线。 这意味着

\|  # A pipe symbol. It needs to be scaped with a backslash 
      # because otherwise it means "OR" 
(?=  # a so-called lookahead group. It checks if its contents match 
      # at the current position without actually advancing in the string 
    \w=> # a word character (a-z, A-Z, 0-9, _) followed by => 
)   # end of lookahead group. 
1

击穿的正则表达式:

  • /正则表达式文本起始分隔符
  • \|字符串中匹配||是在正则表达式一个特殊字符,因此使用\逃脱它
  • (?=是一个超前的表达式,它检查是否字符串如下表达没有匹配它
  • \w=>匹配任何字母数字串(包括_),其次是=>
  • )/标志着先行表达的端部与正则表达式

在短的端部,如果字符串后跟任意字母数字字符或下划线,则字符串将在|上拆分,然后=>

0

在这种情况下,管道字符会被转义,因此将其视为文字管道。分割发生在任何字母数字和'=>'之后的管道上。

'|'在正则表达式中也用作一种OR运算符。例如:

split(/k|i|tt|y/) 

会分裂为'k','i','tt'或'y'字符。

0

剪裁定界字符,我们得到\|(?=\w=>)

  • |是在正则表达式的特殊字符,所以应该用一个反斜杠转义为\|
  • (?=REGEX)是提前正面看语法:只有匹配REGEX匹配,但不会使用匹配REGEX的子字符串。与REGEX的匹配不成为匹配结果的一部分。如果它仅仅是\|\w=>,则父字符串将被拆分为|a=>而不是|

因此/\|(?=\w=>)/比赛只有那些|字符后跟\w=>。它匹配|a=>但不|a>||

考虑从链接的问题的例子字符串:a=>aa|b=>b||b|c=>cc。如果不是用于预测,split会产生一个数组[a=>aa, b||b, cc]。随着向前看,你会得到[a=>aa, b=>b||b, c=>cc],这是所需的输出。

相关问题