用正则表达式将a = b替换为b = a

时间:2013-12-25 15:20:16

标签: regex

我有一长列表(约40行),如:

tbxName.Text = clientName
tbxCity.Text = clientCity
tbxStreet.Text = clientStreet
...
etc

我想以相反的方式得到它而不用手写<复制/粘贴

clientName = tbxName.Text
clientCity = tbxCity.Text
clientStreet = tbxStreet.Text
....

我希望忽略名称和=符号之间的空格,以便我的条目可以是clientName = tbxName.Text,clientName = tbxName.Text,clientName = tbxName.Text,clientName = tbxName.Text等等

是否可以使用Regex公式?

5 个答案:

答案 0 :(得分:2)

正则表达式将是:

([^=\s]+)\s*=\s*(.+)$

解释很简单: *一个或多个不是空格或等号的字符 * 0或更多的空格字符 *等号 * 0或更多的空格字符 *直到字符串结尾的所有其他内容

替换字符串将是

\2 = \1

答案 1 :(得分:1)

s/(.*)=(.*)/\2=\1/
^ ^^^ ^     ^  ^
| ||| |     |  | First captured group
| ||| |     | Second captured group
| ||| | Literal = sign
| ||| Repeat 0 or more times
| || Match any character
| | Begin capture group
| Substitute (in perl)

如果你不关心间距。

答案 2 :(得分:0)

更好地编写控制台应用程序并使用下面的算法

1. Read all lines
2. Split on newline
3  Foreach line split expression on '='(equal) sign
4  Write new line formatted second = first

答案 3 :(得分:0)

我经常将Sublime Text 3用于此目的。

只需在编辑器中插入代码,然后选择查找&gt;替换...切换到正则表达式。 将以下正则表达式插入查找内容:

(.+)\s*=\s*(.+)

更换为替换为:

\2 = \1

答案 4 :(得分:0)

这是我一直使用sublimetext的东西。特别是您可以使用multi select功能来执行此操作。

这个编辑器的学习曲线迫使一些人头疼,虽然答案只是一个谷歌,但一旦你开始用崇高的文字做事,你通常只会花费无数时间重复做它一个宝贵的工具。

对于这个特殊的问题,我会将这些行粘贴到编辑器中然后选择其中一个等号来命中alt + f3(或选择 - >快速查找全部)以获得所有等号上的多选游标然后抓取每个等于之后的文本,删除等号,粘贴每行开头的文本,并在它们之间添加一个等号。