正则表达式替换以更改句子中单词的顺序

Jer*_*emy 5 regex

如果我有这样的字符串:

"word1'word2'word3"

是否可以使用正则表达式替换将字符串更改为:

"word1 word3'word2'"

我知道word1和word3会是什么,但不知道word2会是什么,但它总是用单引号.

R. *_*des 7

您可以替换"word1 ('\w+') word3"使用"word1 word3 \1".替换语法在其他正则表达式引擎中可能不同; 我正在使用基于Perl的.NET.

  • \w+匹配一系列单词字符,也就是一个单词.如果它不符合你的单词定义,你可以改变它;
  • 括号用于分隔表达式中的组.第一个是第一组,第二个是第二组,等等.通常正则表达式引擎将第0组计为整个匹配;
  • \1替换字符串中表示使用一组从匹配,\2是指基团二个等

  • 如果您在Visual Studio的查找/替换中进行替换,则需要$ 1,而不是/ 1. (2认同)

Tot*_*oto 6

我会说 :

s/"(word1)\s+('.+?')\s+(word3)"/"$1 $3 $2"/
Run Code Online (Sandbox Code Playgroud)