0

すでに機能している特定のパターンで数字を正規表現一致させる必要がありますが、その前にない場合に限り(+ます。

有効な一致を取得したい文字列の例: 12, 12.5, 200/300,200/300/400%1/2/3/4/5/6/7

有効な一致を持たないようにしたい文字列の例: (+10% juice),(+4)

ですべての有効な一致を取得できますが、有効な一致(\d+[/%.]?)+を持たないサンプル文字列を除外するための助けが必要です (つまり、(+前述のパターンの直前に文字列がない場合にのみ一致します)。

誰かが私を助けることができますか?!私はすでに(like )を試しました?!(\(\+)(\d+[/%.]?)+が、何らかの理由で必要な方法で動作させることができません。

( http://gskinner.com/RegExr/を使用して正規表現をライブでテストできます)

編集:間違った言葉を使ったかもしれません。検索文字列がで始まるかどうかを確認したくありませんが、文字列の前に右(+がないことを確認したいです。(+

次の入力で正規表現を試してください。

マッチ:(\d+[/%.]?)+

global(テキスト内で複数の一致を検索する場合)のチェックボックスをオンにします。

文章:

this should find a match: 200/300/400
this shouldnt find any match at all: (+100%) 
this should find a match: 40/50/60%
this should find a match: 175

現在、4 行すべてで一致が検出されます。2行目で一致が見つからなくなった正規表現が必要です。

4

1 に答える 1

1

必要な正規表現構造は「負の後読み」です - http://www.regular-expressions.info/lookaround.htmlを参照してください。DONTMATCHME(?<!DONTMATCHME)は、式の次のビットの直前で見つけたくない式です。重大なことに、後読みビットは一致自体の一部とは見なされません

あなたの式は次のようになります。

(?<![+\d/\.])(\d+[/%.]?)+

編集 - 否定後読みを + または別の数字ではない任意の文字に変更しました! 編集 #2 - 後読みをメインのキャプチャ ブラケットの外に移動しました。/マッチ前の許容できない文字の範囲を&を含むように拡張.

于 2013-10-11T08:30:56.010 に答える