带有正则表达式的字符串最后一个单词的第一个单词和第一个字母

时间:2012-11-21 11:15:21

标签: regex

我想使用第三方工具将大量文件批量导入SharePoint并将其与用户关联。它需要一个正则表达式来执行文件名和帐户名之间的转换。

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

的格式

所以说明一下:

foo bar -> foob
foo bar qux -> fooq

在搜索时,我确实找到了一些获取最后一个单词的第一个字母的例子,但它们都使用了代码中的函数和正则表达式,但在这种情况下我无法使用。是否可以单独使用正则表达式进行此操作?

3 个答案:

答案 0 :(得分:3)

你可以试试这个:

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

here on Regexr

您将在第一个捕获组中找到第一个名称,大多数称为$1,而$2中的姓氏的第一个字符

如果名称仅由字母a-z或A-Z组成,则此方法有效。为了给你一个更好的答案,你需要给出你的名字的规格和你正在使用的工具。

答案 1 :(得分:0)

试试这个(Perl风格):

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

答案 2 :(得分:0)

将每个文件名与此模式匹配:

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

并使用以下模式替换匹配的字符串以生成帐户名称:

$1$3