有人可以帮助我从下面提供的字符串中提取粗体文本“ england”
\ABCD\E$\FGHI$\BAB-COM-DEP_XYZ\TAM\england.CLSM.IST
我尝试过\\.*?\.
,但后来得到
\ABCD\E$\FGHI$\BAB-COM-DEP_XYZ\TAM\england.
任何帮助将不胜感激
答案 0 :(得分:2)
在Powershell中,您可能会得到不带扩展名的文件名,用.
分割字符串并抢占第一个选项:
PS> $s = '\ABCD\E$\FGHI$\BAB-COM-DEP_XYZ\TAM\england.CLSM.IST'
PS> [System.IO.Path]::GetFileNameWithoutExtension($s).Split('.')[0]
england
如果出于任何原因需要正则表达式,我建议使用
.*\\([^.]+)
并获取组1的值。参见regex demo。
详细信息
.*\\
-匹配直到最后一个\
字符的所有文本(因为.*
是一个贪婪的子模式)([^.]+)
-第1组:除.
之外的一个或多个字符另一个正则表达式可能看起来像
([^.\\]+)[^\\]*$
详细信息
([^.\\]+)
-第1组:除.
和\
之外的一个或多个字符[^\\]*$
-直到字符串(\
)末尾的$
以外的0个或多个字符。Powershell的使用:
PS> $s -match '([^.\\]+)[^\\]*$' | Out-Null
PS> $matches[1]
england
如果您需要可直接返回所需字符串的正则表达式,则可以使用
$s -replace '.*\\([^\\.]+)[^\\]*$', '$1'
.*
-匹配任意0个以上的字符\\
-一个\
字符([^\\.]+)
-第1组(用$1
引用):匹配并消耗一个或多个除\
和.
以外的字符[^\\]*$
-除\
([^\\]*
)和字符串结尾($
)以外的0+个字符。答案 1 :(得分:0)