提问者:小点点

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


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

我们的文件格式为firstname-namefirstname-middlename-name。我们的帐户名的格式为名字然后是姓氏的首字母

因此,为了说明:

foo bar -> foob
foo bar qux -> fooq

在搜索过程中,我确实找到了一些获取最后一个单词的第一个字母的示例,但它们都使用了代码中的函数和正则表达式,但在这种情况下我无法使用这些函数。单独使用正则表达式可以做到这一点吗?


共3个答案

匿名用户

您可以尝试以下方法:

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

在Regexr上看到它了吗

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

如果名称仅由字母a-z或a-z组成,这将起作用。为了给您更好的答案,您需要给出名称的规格以及您使用的工具。

匿名用户

试试这个(Perl风格):

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

匿名用户

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

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

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

$1$3