2016-09-27 43 views
-1

我有一個巨大的文本文件。 我需要改變這樣的:如何用正則表達式移位字符串的一部分

someChars_getSomeCharsValue(

這樣:

someChars_getValueSomeChars(

你可以看到的圖案。我需要的是在get之後移動Value(在左括號之前)。

文中沒有空格。 someChars代表帶有ASCII字符和未定義長度的字符串。

這是C頭文件的摘錄,我需要更改宏定義。這是從文件的摘錄:

#define usart_getLeastSignificatntBitFirstValue() (__usart_getPropertyValue(0, 10)) 

變成這樣:

#define usart_getValueLeastSignificatntBitFirst() (__usart_getValueProperty(0, 10)) 
+0

地方請解釋downvote – Hairi

+0

你W¯¯螞蟻使用\ w *?get(\ w *?)\(然後使用大寫字母拆分組並將最後一個這樣的元素移動到第一個? –

+0

你用什麼語言做這個? –

回答

0

下面的代碼應該給你你需要在PHP什麼...在其他語言太想法是一樣的:

<?php 
$re = "/(\\w*?get)(\\w*?)(\\()/"; 
$str = "#define usart_getLeastSignificatntBitFirstValue() (__usart_getPropertyValue(0, 10))"; 

$result2=preg_replace_callback($re,function($groups){ 
    $words=preg_split("/(?=[A-Z])/",$groups[2],-1,PREG_SPLIT_NO_EMPTY); 
    $newStr=''; 
    for($i=0;$i<count($words);$i++) 
    { 
     if($i==(count($words)-1)) 
      $newStr=$words[$i].$newStr; 
     else 
      $newStr=$newStr.$words[$i]; 
    } 
    return $groups[1].$newStr.$groups[3]; 
},$str,-1); 
echo '<br>'; 
echo $result2; 
?> 

嘗試這樣的代碼http://phpfiddle.org/

相關問題