2017-12-03 10 views
1

私は文字列から価格を取得しようとしています。しかし、私は価格グループを取り込むことにいくつかの困難に直面しています。以下は私のサンプルデータと私のアプローチです。正規表現ネガティブルックアヘッドとルックアヘッド

サンプル

cash $450 
012-6323735 
cash 450 
500 

現在のアプローチ

私は負の後読みと先読みを使用してみてください " - " 文字

(?<!\-)(\d+)(?!\-) 

電流出力

enter image description here

誰もが価格グループを取得する考えですか?

所望の出力

現金$ 450(真、キャプチャグループ450)

012から6323735(偽)

現金450(真、グループ450をキャプチャ)

500(True、キャプチャ・グループ500)

+2

あなたはワード境界と独占的量使用することができます? '\ bを(<! - )\ d ++(?! - ) ' –

+1

ハイフンは特殊文字ではないため、エスケープする必要はありません。 –

+0

エンジンは指定されていないので、所有量指定子はほとんど解決策ではありません。 – revo

答えて

2

正規表現の前後にある値がダッシュであってはならないことを伝えるとき、正規表現エンジンは、この要件を満たすためにシーケンス内の数字のいずれかを使用しても構いません。たとえば、01には2が続きます。これはダッシュではありません。したがって、01はキャプチャしたいものでなければなりません。明らかに、これはあなたが望むものではありません。この問題を解決するために

一つのアプローチは、キャ​​プチャグループの前と後のアンカー\bを追加することです:

(?<!\-)\b(\d+)\b(?!\-) 

Demo.

関連する問題