我使用notepadd ++搜索并替换了不少名字。
我需要转变这些
Neil Kilkenny
Mateja Kežman
Kim Do-Heon
进入这个:
Neil,Kilkenny
Mateja,Kežman
Kim,Do-Heon
到目前为止,我已经:
search: ([A-Z]+)([a-z]+) ([A-Z]+)([a-z]+)
replace: $1,$2
问题:我的正则表达式与名称中的ž
或-
不匹配。
我考虑使用.
,但我不知道有多少这些特殊字符或它们将在何处出现。
答案 0 :(得分:3)
试试这个:
([^ \n\t\r]+) ([^ \n\t\r]+)
(不要忘记^
)
答案 1 :(得分:2)
我认为你唯一能确定的是名字将用空格分隔,并且名字首先出现。因此,我认为使用.
会很好。
([^\s]+) (.+)
-OR -
([\S]+) (.+)
(感谢@Simon提供的第二个更易读的解决方案)。
这应该抓住空间之前的所有内容并放入一个组,以及空格之后的所有内容(包括更多空格)并将其放入一个组中。
<小时/> 我只是注意到OP没有切换组的顺序,如果是这种情况,简单的查找
<space>
上的替换就可以了。但是,如果需要,提供的正则表达式允许您<last name>, <first name>
。
作为参考,Notepad ++使用PCRE。 http://perldoc.perl.org/perlre.html
答案 2 :(得分:1)
如果这些是剩下的所有空格,请搜索单个空格(如果您担心可能存在连续的空格,则为[ ]+
)并替换为,
。对于单一空格选项,您甚至不需要正则表达式模式。
答案 3 :(得分:0)
这个正则表达式似乎正在运行(将组从4减少到2 ):
([A-Z]+[a-z]+) ([A-Z]+[a-z]+)
答案 4 :(得分:-1)
要获得匹配,请使用\n
Regxp:([a-zA-Z]+)\s([a-zA-Z]+)
替换:\1,\2