2012-11-21 211 views
0

有一个第三方工具,我想使用批量导入的一些文件到SharePoint中并将它们与用户相关联。它需要一个正则表达式来完成文件名和帐户名之间的转换。正则表达式的字符串的最后一个字的第一个字和第一个字母

我们的文件格式为firstname surnamefirstname middlename surname。 我们的帐户名称格式为firstname,然后first inital of the surname

所以来说明:

foo bar -> foob 
foo bar qux -> fooq 

在搜索我确实发现获得的最后一句话的第一个字母的一些例子,但它们中与正则表达式组合代码利用的所有功能,但不是提供给我在这种情况下。是否有可能只用正则表达式呢?

+0

一方面它取决于第三方工具如何使用匹配。它可能需要第一个,或者连接所有匹配或其他任何...即使它连接所有匹配(我认为它是您需要的选项),但我不确定它是否可行。 – Diego

回答

3

你可以试试这个:

^([a-zA-Z]+).*\s([a-zA-Z])[a-zA-Z]+$ 

看到它here on Regexr

你会第一个捕获组中找到的第一个名字,大多被称为$1和姓氏的$2的第一个字符

如果名称仅由字母az或AZ组成,这将起作用。为了给你一个更好的答案,你需要给出你的名字的规格和你使用的是什么工具。

+0

这匹配整个字符串。 – Diego

+0

感谢您的快速回复。我并不太在意有特殊情况的特殊情况,因为如果需要可以手动整理。只要其中的大部分工作。我如何在一个接受正则表达式的字段中返回两个捕获组的内容? –

+0

@Diego,为什么?默认情况下,点不匹配换行符。我不知道他是如何得到这些信息的,我假设这些文件是逐行读取的,那么我的解决方案很好,如果他获得了完整的文件内容,那么我需要启用'multiline'模式'm',但是它仍然不匹配整个字符串。 – stema

0

试试这个(Perl样式):

s/(\w+).*?\s(\w)(\w+)$/$1$2/ 
0

符合这种模式的每个文件名:

^(\w+)\s+(\w+\s+)?(\w)\w*$ 

而更换匹配的字符串与下面的模式产生的帐户名:

$1$3 
相关问题