Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用正则表达式移位字符串的一部分_Regex - Fatal编程技术网

Regex 如何使用正则表达式移位字符串的一部分

Regex 如何使用正则表达式移位字符串的一部分,regex,Regex,我有一个巨大的文本文件。 我需要改变这一点: someChars_getSomeCharsValue( 为此: someChars_getValueSomeChars( 你可以看到图案。我需要的是将值(位于右括号之前)移到get之后 文本中没有空格someChars表示具有ASCII字符和未定义长度的字符串 这是一个C头文件的摘录,我需要在其中更改宏定义。这是该文件的摘录: #define usart_getLeastSignificatntBitFirstValue() ( __usa

我有一个巨大的文本文件。 我需要改变这一点:

someChars_getSomeCharsValue(
为此:

someChars_getValueSomeChars(
你可以看到图案。我需要的是将
(位于右括号之前)移到
get
之后

文本中没有空格
someChars
表示具有ASCII字符和未定义长度的字符串

这是一个C头文件的摘录,我需要在其中更改宏定义。这是该文件的摘录:

#define usart_getLeastSignificatntBitFirstValue()   ( __usart_getPropertyValue(0, 10) )
为此:

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

下面的代码应该可以满足您在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;
?>


请在类似以下位置尝试代码

请解释下一步您想使用\w*?get(\w*?)查找函数(然后使用大写字母拆分组,并将最后一个这样的元素移到第一个?您使用什么语言来执行此操作?这一个听起来很棒。您能给我举个例子吗。