regex - 修剪超过 20 个字符

标签 regex powershell

我正在编写一个脚本,该脚本将根据 csv 文件生成 AD 用户名。现在我有以下行工作。

Select-Object @{n=’Username’;e={$_.FirstName.ToLower() + $_.LastName.ToLower() -replace "[^a-zA-Z]" }}

截至目前,这采用名称并将其组合成 AD 友好名称。但是我需要将名称缩短到不超过 20 个字符。我尝试了几种不同的方法来缩短用户名,但我没有任何运气。

关于如何缩短用户名的任何想法?

最佳答案

可能最优雅的方法是在替换中使用积极的回顾:

... -replace '(?<=^.{20}).*'

只有在字符串开头有 20 个字符 (^.{20}) 时,此表达式才匹配字符串的其余部分。

另一种选择是用前 20 个字符的捕获组替换:

... -replace '^(.{20}).*', '$1'

这会在字符串的开头捕获最多 20 个字符,并用捕获的组 ($1) 替换整个字符串。

关于regex - 修剪超过 20 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39883443/

相关文章:

php - 正则表达式查找小于和大于等号之间的文本

powershell - 将输入的数字修改为特定的模式格式?

powershell - 有没有办法确定exe是32位还是64位?

security - AsPlainText 安全性

powershell - get-itemproperty 报告项不存在,当它存在时

php - 保存数据时添加 rel ="nofollow"

用于检查时间格式的 JavaScript 正则表达式

python - 如何在Python中使用正则表达式更改文件名?

mysql - 从 STATION 查询不以元音开头且不以元音结尾的 CITY 名称列表

version-control - 捕获非标准 Powershell CmdLet 输出以进行流量控制