是的,我看过几个主题,但没有一个是我需要的。 场景: 文件夹列表,格式如下:
<sep><full name of person><sep><yyyy-mm><sep><full name of person><sep>
&LT; '月' &GT;
可以是以下任何一种:\ s([{或简称不存在(空)
<name of person>
在名称之间包含空格,我必须在之间保留 名字,而不是姓氏。
我想将信息提取并分离到不同的字段中。 [编辑]名字字段是可选,这意味着它可能是空的(我忘了在第一篇文章中说这个)。 月字段也是可选的,但由于它不受此“尾随空格问题”的影响,因此无需提及。[END EDIT]
我使用波浪号(〜)作为字段之间的分隔符。除了一件事之外,我的RegEx做的一切都正确:它不会删除名称的尾随空格。
这将在EmEditor(首选)或Notepad ++等文本编辑器中执行,因此我需要纯RegEx,这意味着没有插件,没有编程功能等。
我目前的RegEx是这样的:
FIND:
([\s\(\[\{]*)
([\w\s\;]*)
([\s\(\)\[\]\{\}\-]*)
(\d{4})
([\s\-]*)
([\d]{0,2})
([\s\(\)\[\]\{\}\-]*)
([\w\s\;]*)
([\s\)\]\}]*)
REPLACE:
\2~\4~\6~\8
“查找”表达式只是一行,但出于可读性原因,我将其分组。
原始样本(美元符号[$]标记行尾):
full name with spaces 2012 5 Another name with spaces $
(This is a name) [2010-5] { Full name again } $
2014-05 nome de pessoa$
这是我目前得到的:
full name with spaces ~2012~5~Another name with spaces ~$
This is a name~2010~5~Full name again ~$
~2014~05~nome de pessoa~$
我需要在波浪号(〜)或美元($)符号之前删除那些讨厌的空格。 :) 有什么帮助吗?
[编辑:答案] 我根据下面的正确答案替换了两个“匹配名称”表达式,解决了我的问题:
([\w][\s\w]*[\w])?
答案 0 :(得分:2)
要选择此人,请使用类似这样的正则表达式
([\ W] [\ S \ W] * [\ W])
所以,它以一个字母开头,中间有空格或字母,并以字母结尾。这将消除讨厌的空间