Java 用于交换单词的正则表达式
我是一个正则表达式新手,我不知道如何编写一个可以交换成对连续单词的正则表达式。例如,如果句子是Java 用于交换单词的正则表达式,java,regex,Java,Regex,我是一个正则表达式新手,我不知道如何编写一个可以交换成对连续单词的正则表达式。例如,如果句子是“你们今天好吗”,那么结果应该是“你们今天好吗”您可以尝试使用正则表达式组,这样您的正则表达式就可以是(\b\w+\b)\s+(\b\w+\b),因此使用replaceAll可以: String str = "How are you today guys"; String regex = "(\\b\\w+\\b)\\s+(\\b\\w+\\b)"; System.out.println(str.rep
“你们今天好吗”
,那么结果应该是“你们今天好吗”
您可以尝试使用正则表达式组,这样您的正则表达式就可以是(\b\w+\b)\s+(\b\w+\b)
,因此使用replaceAll可以:
String str = "How are you today guys";
String regex = "(\\b\\w+\\b)\\s+(\\b\\w+\\b)";
System.out.println(str.replaceAll(regex, "$2 $1"));
输出
are How today you guys
意思是:
捕获第一个单词(\b\w+\b)
后面跟一个或多个空格\s+
捕获第二个单词(\b\w+\b)
编辑
或者,您可以使用
\\b(\\w+)\\s+(\\w+)\\b
来代替,这样做很好。可能重复:(“[^']+?”)\s+([^”]+?(?>”)$我可以用replaceAll()来做吗java中的函数?谢谢@WiktorStribiżew这是正确的新东西:)它工作是因为\w
和\s
和\s
和\w
之间存在隐式的单词边界。实际上,单词边界和零宽度断言通常放在组外,因此“\\b(\\w+)\\s+(\\w+)\\b”
应该是这里最好的。这是专家,你的分析非常好@WiktorStribiżew,我喜欢你的答案