【发布时间】:2014-07-15 17:24:11
【问题描述】:
是的,我查看了几个主题,但没有一个是我真正需要的。 设想: 文件夹列表,格式如下:
<sep><full name of person><sep><yyyy-mm><sep><full name of person><sep>
可以是以下任何一种:\s ( [ { 或根本不存在(空)
<name of person>
在名称之间包含空格,我必须在它们之间保留 only 名字,而不是在姓氏之后。
我想提取信息并将其分离到不同的字段中。 [编辑] 名字字段是可选的,这意味着它可能是空的(我忘了在第一篇文章中说这个)。 month 字段也是可选的,但由于它不受“尾随空格问题”的影响,因此无需提及。[END EDIT]
我使用波浪号(~)作为字段之间的分隔符。我的 RegEx 做的一切都是正确的,除了一件事:它不会删除名称的尾随空格。
这是要在像EmEditor(首选)或Notepad++这样的文本编辑器中执行,所以我需要纯正则表达式,这意味着没有插件,没有编程功能等。
我目前的正则表达式是这样的:
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])?
【问题讨论】:
-
你能举个例子吗?!
标签: regex text text-editor