正则表达式替换在线组后的所有空格

时间:2014-10-09 15:30:02

标签: php regex replace space

好的......这个问题听起来很奇怪,但我的意思是:

我有一个特定的组要搜索,我希望该组后面的每个空格都被剥离出来,但只在当前行上。我的具体例子如下:

@subpackage Some Word Stuff

@subpackage不接受空格,但当时我还不知道,我有很多这样的线要修复。我想做一个查找并用正则表达式替换(我的IDE支持这个),以便在@subpackage的每个实例之后删除单词之间的空格。

编辑:通过例子清晰可能

"@subpackage Some Word Stuff" -> "@subpackage SomeWordStuff"

1 个答案:

答案 0 :(得分:1)

使用下面的正则表达式查找,替换为空字符串'' (只需使用replace_all)

 # '~(?mi-)(?:(?!\A)\G|^@subpackage)[^ \r\n]*\K[ ]+~'

 (?xmi-)                     # Inline 'Expanded, multiline, case insensitive' modifiers
 (?:
      (?! \A )                    # Matched before, start from here
      \G                          
   |                            # or,
      ^ @subpackage               # '@Subpackage' at bol (remove '^' if not at bol)
 )
 [^ \r\n]*                   # Not space or line breaks
 \K                          # Don't include anything from here back in match
 [ ]+                        # 1 or more spaces

这是一个适用于所有非linebreak空格的内容。

 # '~(?mi-)(?:(?!\A)\G|^@subpackage)\S*\K[^\S\r\n]+~'

 (?xmi-)                     # Inline 'Expanded, multiline, case insensitive' modifiers
 (?:
      (?! \A )                    # Matched before, start from here
      \G                          
   |                            # or,
      ^ @subpackage               # '@Subpackage' at bol (remove '^' if not at bol)
 )
 \S*                         # 0 or more, Not whitespace
 \K                          # Don't include anything from here back in match
 [^\S\r\n]+                  # 1 or more non-linebreak whitespaces