所以,我有很多像这样的数字
rocket123
firefly1000
attack577
是否有任何正则表达式可以使数字反转?
rocket321
firefly0001
attack775
答案 0 :(得分:1)
通过一个小技巧这是可行的。
第1步。为尚未倒置的数字添加标记。
查找
\b(\w+?)(\d+)\b
替换:
$1§$2
您可以选择其他标记而不是§
。
第2步。使用以下设置替换所有足够的时间:
查找
\b(\w+)§(\d*)(\d)\b
替换:
$1$3§$2
第3步。删除所有标记。
查找
\b(\w+\d)§
替换:
$1
希望这有帮助。
答案 1 :(得分:0)
如果知道要反转的最大位数并且不是太大,则可以使用单个Notepad ++正则表达式搜索和替换。假设最大位数为12,则表达式为:
搜索:
(\d)(\d)(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?(\d)?
替换为:
(?{12}${12})(?{11}${11})(?{10}${10})(?9$9)(?8$8)(?7$7)(?6$6)(?5$5)(?4$4)(?3$3)$2$1
说明:
要反转的任何数字都必须至少包含两位数,因此搜索中的首个(\d)(\d)
得到两位数,而替换中的最后$2$1
则将其倒序。输出。 (前两位数字是简单的部分。)然后,搜索字符串将模式(\d)?
重复所需的次数,以获得最大位数。这些与剩余的数字(如果有)匹配。每个(\d)?
模式在替换字符串中都有一个对应的项目,它们的格式为(?N$N)
,其中每个N
是捕获组的编号。单个数字捕获类似于数字4的(?4$4)
。对于捕获10和以上的数字,将其括在花括号中,例如,数字(?{12}${12})
用数字12包围。这些替换项测试捕获组是否捕获了任何东西,并且,如果确实存在,则插入该捕获的项目。另请参见this answer。
变化
根据需要添加或删除其他搜索和替换项,以增加或减少最大位数。
如果数字位数可能比预期的大,则在搜索字符串中添加额外的(\d)?
并在替换末尾添加(?{13}__Some suitable error message__)
会在超长的数字组上输出错误消息。当然,13
需要进行更改以匹配搜索和替换项的数量。
已通过Notepad ++ 7.5.6版进行测试。