RegEx修剪字符串中名称末尾(不是行)的空格

时间:2014-07-15 17:24:11

标签: regex text text-editor

是的,我看过几个主题,但没有一个是我需要的。 场景: 文件夹列表,格式如下:

<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])?

1 个答案:

答案 0 :(得分:2)

要选择此人,请使用类似这样的正则表达式

  

([\ W] [\ S \ W] * [\ W])

所以,它以一个字母开头,中间有空格或字母,并以字母结尾。这将消除讨厌的空间