Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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
如何使用regexjava反转字符串中的最后一个和第一个单词_Java_Regex_String - Fatal编程技术网

如何使用regexjava反转字符串中的最后一个和第一个单词

如何使用regexjava反转字符串中的最后一个和第一个单词,java,regex,string,Java,Regex,String,我有这根绳子 “我的电话号码超出范围。我是马克” 我想把它改成 “Mark电话号码超出范围。这是我的” 如何在JAVA中使用正则表达式 到目前为止我都试过了 public static void main(String args[]){ String str = "My Phone number is out of range. This is Mark"; str=str.replaceAll("^(\\w+)(.*)(\\w+)$","$3$2$1"); Syste

我有这根绳子

“我的电话号码超出范围。我是马克”

我想把它改成

“Mark电话号码超出范围。这是我的”

如何在JAVA中使用正则表达式

到目前为止我都试过了

 public static void main(String args[]){
    String str = "My Phone number is out of range. This is Mark";
    str=str.replaceAll("^(\\w+)(.*)(\\w+)$","$3$2$1");
    System.out.print(str);
    }
输出:

ky Phone number is out of range. This is MarMy
分开很容易

 split() the string based on \\s+ and put it in String array arr
 Do temp = arr[0] ; 
arr[0] = arr[arr.length-1]; 
arr[arr.length-1] = temp;

正如@TheLostMind所建议的那样,拆分将更容易、更干净地使用,但如果您想使用正则表达式,那么就来吧

您正在使用\w+匹配结尾处的单词,但它只匹配结尾处的一个字符。为了匹配整个单词,你需要匹配最后一个单词前的空格。您可以使用下面的表达式来实现这一点

str=str.replaceAll("^(\\w+)(.*)([ ]+)(\\w+)$","$4$3$2$3$1");
这里$3是匹配的空格字符

希望这有帮助