0

これが私の問題です。そして、ここで提案されている会話は私の質問に非常によく答えていますが、それでもいくつかの調整を行うには助けが必要です.

一般的に理解できる数値形式の正規表現

1 つの正規表現でこれを達成できますか?

ストリング :

texta wordb 1234 wordc textd
texta wordb $1234 wordc textd
texta wordb 1,234 wordc textd
texta wordb 1234.12 wordc textd

これが上の1つの巨大なストリングである場合。次のように、[数字の前の単語] + [数字] と [数字の後の単語] を配列に抽出します。

wordb 1234 wordc
wordb $1234 wordc
wordb 1,234 wordc
wordb 1234.12 wordc
4

1 に答える 1

0

できますよ:

(\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
于 2012-10-01T22:20:32.737 に答える