2016-09-21 9 views
-1

は、私は次の例のテキストを持っている:REGEX制御

There are 7 apples, 3 lemons. 

私は正規表現パターンで検索するソフトウェアを、持っているが、しかし2回:(属性として)「りんご」のためのものと2回目は "7"(値として)。

私は "lemons"というパターンで検索すると "lemons"、 "d"で検索すると "7"が見つかりますが、 "3"が必要です。

私の質問は次のとおりです。正規表現エンジンを制御するにはどうすればよいですか?

+0

'((\ d +)(\ w +))'と入力し、各マッチからグループ値を取得します。 https://regex101.com/r/jL6pI9/1 – ThePerplexedOne

答えて

0

あなたはこのパターンlemons使用に伴う桁たい場合:あなたはこのパターン​​使用に関連した数字をしたい場合は

/(\d+)\slemons/ 

を:明らかにこれはでアップDRYedすることができ

/(\d+)\sapples/ 

プログラムでは、lemonsまたは​​の部分を入力できます。これは、入力されたパターンを取って、あなたが探しているリテラルテキストの前に(\d+)\s正規表現を付加することができます。私はあなたにその部分を残します。

\1 # 7 
\2 # apples 

\1 # 3 
\2 # lemons 
:ような何かを得るために

あなたがそれらに近い数字で単語のすべての出現を抽出したい場合は、あなたがあなたの非構造化データを解析するために、この正規表現を使用することができます...

/(\d+)\s(\w+)/g 

...

+0

最初の質問:「/」記号とは何ですか? 2番目の質問:問題は、私はプログラムコードにアクセスせずに、正規表現のパターンを書くことができるということです。正規表現の2番目のグループにアクセスできる正規表現パターンはどれですか? – CyKon

+0

1. '/'記号は省略できます。それらは正規表現を表すための規約に過ぎません。 2. '\ 1'はマッチの最初のグループにアクセスします。 '\ 2'はマッチの第2グループにアクセスします。 – wpcarro

+0

さて、分かりました。しかし、私は "3レモン"を見つけ、同時に "!3"を返す正規表現パターンが必要です。私は正規表現が1つしかなく、結果(グループ)へのアクセス権がないので... – CyKon