2014-10-09 84 views
3

好了...這個問題聽起來很奇怪,但我的意思是這樣的:正則表達式替換所有空格組之後行

我有一組特定的搜索,我想這組後每一個空間,但只在目前的路線上被剝離出來。我的具體的例子是這樣的:

@subpackage Some Word Stuff 

@subpackage不接受空白,但我不知道的時候,我有很多很多這些線的修復。我想用正則表達式(我的IDE支持這個)去查找和替換,以去掉每個實例@subpackage之後的單詞之間的空格。

編輯:清晰的例子也許

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

難以理解:( – vks 2014-10-09 15:32:24

+1

所以,你要'部分文字Stuff'成爲'SomeWordStuff'? – Grice 2014-10-09 15:33:57

+0

是'@ subpackage'始終在該行的開始? – 2014-10-09 15:40:29

回答

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 

這是一個對所有非斷行空格。

# '~(?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 
+0

我不確定這是否正常工作,我在這裏測試了一下:http:// www。 phpliveregex.com/。我相信我使用的IDE(PHP風暴)遵循preg_replace – 2014-10-09 19:17:24

+0

的方法@JoelWorsham - http://www.phpliveregex.com/p/7jj按'preg_replace'選項卡。 – sln 2014-10-09 19:36:45

相關問題