长话短说,我正在尝试通过创建一个简单的投票系统(该投票系统禁止一个人进行多次投票)来帮助《最终幻想XIV》吟游诗人表演社区。 Strawpoll很容易作弊。 ^^因此,我已经找到解决方法,但是我需要有关Notepad ++中RegEx函数的帮助。
我们需要检查选民何时多次投票,并删除所有多余的选票(而不是删除第一票)。因此,从文字上来说,从一行的开头到>>的所有内容都是我们要检查的重复项,而行中>>之后的部分在搜索中将被忽略。
那么这:
VoterName1 >> Thancred
VoterName1 >> Minfilia
VoterName1 >> Thancred
VoterName2 >> Wedge
VoterName3 >> Thancred
VoterName3 >> Wedge
VoterName4 >> Biggs
看起来像这样:
VoterName1 >> Thancred
VoterName2 >> Wedge
VoterName3 >> Thancred
VoterName4 >> Biggs
我试图通过结合自己在网上看到的东西和摆弄的东西并尝试学习RegEx来自己找到解决方案,但是编程思维(或任何可能的称呼)并不是我的专长。无论如何,非常感谢您的帮助!
答案 0 :(得分:1)
使用记事本++进行测试
搜索:
^((.+) >>.+)(\r?\n\2 .+)+
^((\S++).+)(\r?\n\2 .+)+
替换为:\1
它匹配第一个投票者(第2组),然后在以该名字开头的行中引用它。您匹配所有这些行,并用第一个捕获组(整个第一行)替换它们
此外,在记事本++中,\n
不匹配与\r\n
不匹配,因此,在搜索\r
时,您通常想添加一个额外的\n
>
答案 1 :(得分:0)
您可以使用
^(.+) >> (.+)(\n\1.+)+
替换为
$1 >> $2
输出:
VoterName1 >> Thancred
VoterName2 >> Wedge
VoterName3 >> Thancred
VoterName4 >> Biggs
它捕获选民名称和第一个投票的字符,然后通过反向引用匹配具有相同选民名称的后续行,并将其全部替换为(单行)选民名称和第一个投票的字符。