正则表达式在Notepad ++中包含特殊字符

时间:2012-12-19 15:47:46

标签: regex notepad++

我使用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

问题:我的正则表达式与名称中的ž-不匹配。

我考虑使用.,但我不知道有多少这些特殊字符或它们将在何处出现。

5 个答案:

答案 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