为什么这个正则表达式不匹配括号之间文本的空白?((?:((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个或更多个字符,然后是)