你当然可以:
(\p{L}+)\s([\d$,.]+)\s(\p{L}+)
或者,更简单,但可能得到更广泛的支持:
([a-zA-Z]+)\s([\d$,.]+)\s([a-zA-Z]+)
这实际上是抓取一堆字母,然后是一些空格,然后是一个可能还包含字符 $、逗号和点的数字(如果需要,根据您的期望扩展)和另一堆字母。
如果您不需要单独的部分,您可以去掉括号,只取完整的匹配项。否则,您想要的零件在第 1-3 组中。
快速 PowerShell 测试:
PS> $re = '(\p{L}+)\s([\d$,.]+)\s(\p{L}+)'
PS> $tests = 'texta wordb 1234 wordc textd
>> texta wordb $1234 wordc textd
>> texta wordb 1,234 wordc textd
>> texta wordb 1234.12 wordc textd' -split "`n"
>>
PS> $tests | %{ $null = $_ -match $re; Write-Host Word 1: $Matches[1], Number: $Matches[2], Word 2: $Matches[3] }
Word 1: wordb Number: 1234 Word 2: wordc
Word 1: wordb Number: $1234 Word 2: wordc
Word 1: wordb Number: 1,234 Word 2: wordc
Word 1: wordb Number: 1234.12 Word 2: wordc