【问题标题】:RegEx Trimming spaces at end of names (not lines) in string正则表达式在字符串中的名称(不是行)末尾修剪空格
【发布时间】: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


【解决方案1】:

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

([\w][\s\w]*[\w])

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

【讨论】:

  • 非常感谢!这确实解决了尾随空格的问题,但我忘了提到第一个字段是可选的,在这种情况下这不起作用,因为它强制捕获一个不存在的字符。忘记提及(我现在添加了)是我的错。我会尝试找到一种方法来解决这个问题,但我目前还不能认为这是明确的正确答案,因为它会产生误导,但我提高了答案;-)。
  • 我只需要在该表达式组之外添加一个问号。所以,这个答案真的帮助我解决了我的问题。在检查了这个网站的规则后,我想我可以认为这是正确的答案。
猜你喜欢
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 2023-03-31
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多