正则表达式与括号之间的文本空格不匹配



为什么这个正则表达式不匹配括号之间文本的空白?((?:((s>)|(s{2,})|(s))))

它下面没有括在括号中的文本应该被忽略。就在那里。不用担心。只需要触摸括号中的部分。

(  R:2379; L:  28 ) //replace to (R:2379;L:28)
R:2379;L:28
(R:2432;L:28) // ok, no replacements needed
R:2432; L:28
( R  :  2475; L:    28   ) // replace to (R:2475;L:28)
R:2475; L:28
(     R : 2480   ; L:28 ) // replace to (R:2480;L:28)
R:2480; L:28

编辑:

(  R:2379; L:  28 ) //replace to (R:2379; L:28) #a single space is ok, except before or after a parentheses. Multiple spaces are reduced to blank.
(R:2432;L:28) // ok, no replacements needed
(R:2432; L: 28) // ok, no replacements needed. The single spaces are not before or after the parentheses
( R  :  2475; L:    28   ) // replace to (R:2475; L:28) #the single space before the L is fine. other multiple spaces are blanked
(     R : 2480   ; L: 28 ) // replace to (R:2480; L: 28) #the single space before the 28 is fine

您可以使用

preg_replace('/(?:G(?!A)|()[^()]*?K(?:(?<=()s+|s+(?=))|s{2,})(?=[^()]*))/', '', $string)

请参阅regex演示详细信息

  • (?:G(?!A)|()-上一场比赛结束或(
  • [^()]*?-除()之外的零个或多个字符,尽可能少
  • K-省略到目前为止匹配的文本
  • (?:(?<=()s+|s+(?=))|s{2,})-(之后的1+个空格,或(之前的1+1个空格以及任意两个或多个空白字符
  • (?=[^()]*))-后面跟有除()之外的任何0个或更多个字符,然后是)

最新更新