2012-11-21 300 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 
相關問題