下記テキストの太字部分の数値、及び情報(ZZの文字列存在有無)を取得したいと考えております。
テキスト1:
Sample Test 123,456.78 987,654.32
テキスト2:
Sample Test 123,456.78 987,654.32ZZ
取得したい数値、及び情報(ZZ)は常に行末にあります。
こちらの部分を取得するために、現在下記の正規表現を用いて、取得を試みました。
①「ピリオド・カンマ入り数値+行末」の文字列で正規表現検索
以下の正規表現で検索。
\d+([.,]\d+)※+(ZZ)※+(?=\r\n)
「ピリオド、カンマがない数値の場合がある」「ZZという文字列がある場合とない場合がある」ことから、0回以上の繰り返しを表すアスタリスク(文中では表現できなかったため、※にしております)を加えました。
しかし、こちらの正規表現ではMatchアクティビティにおいて、以下のエラーが発生しました。
Matches: parsing "\d+([.,]\d+)*+(?=\r\n) " - Nested quantifier +.
②右から左に、「行末とスペースの間の文字列」で正規表現検索
MatchアクティビティのOptionのRightToLeftをOnにして、以下の正規表現を検索。
(?=\r\n) (.+)\s
しかし、こちらの正規表現ではMatchアクティビティにおいて、以下のエラーが発生しました。
Message Box: Object reference not set to an instance of an object.
③検索対象文字列のカンマとピリオドを除去し、「空白と行末の間の文字列」で正規表現検索
Replaseメソッドで、カンマとピリオドを全て除去し、以下の正規表現を検索。
\s+(\w+)
こちらの方法では、目的の文字列を全て取得することが出来ましたが、
カンマとピリオドを再度振り直す必要が出てくるため、あまり取りたくない手法です。
①、②の手法はどこか間違えているのでしょうか。
よろしくお願い致します。
※なお、以下の点も気になっております。問題解決には必要ありませんが、併せてご教示いただけますと幸いです。
”Sample"という文字列から改行部分まで取る正規表現について
Sample(.+)(?=\r\n)
は機能するが
Sample(.+)(?=$)
は機能しない
Studio 2021.10.0 - 10/12/2021
Community License
Per-user Installation
License Provider: Internal
Activation ID: UIP-0b31735028
Update Channel: Stable
Microsoft Windows 10 Pro 64-bit
5.0.10