2016-05-23 5 views
0

注:私は提案されたソリューションを変更する場合にJavaScriptを使用しています。Regex:プレフィックスに基づく一致の置換を除外

複数のファイルを見て、私は「割引」、「再集計」のような言葉を変えるの問題が発生した単語「カウント」(例えばcountregister.countfunction(count)getCountincrementCount)のようなプロパティ/パラメータを変更します、または "出会い"。

私の小さなユースケースでは、このエラーは単純なヒューリスティックな手法を使用して、 "count"を接頭辞とし、それらを置換から除外する既知の文字グループを探すことで回避できます。

質問

は、すべてのインスタンス「カウント」の を探しますが、文字の知られているプレフィックスグループが見つかった場合は交換無視する正規表現を使用する方法はありますか?

ジャスト*

私はあなたが大規模な未知の探索空間で「カウント」以外の言葉を一般化しようとした場合、私の「プレフィックスヒューリスティック」は崩れ知って明確にするが、それは今のところ十分でしょう。

+0

のhttpを参照してください://をjavascript.info/tutorial/word-boundary –

+0

'.replace(/ \ bcount \ b/g、何か) ' – dandavis

+0

しかし、 '' 'getCount'''のようなケースで壊れますか? –

答えて

0

あなたは正規表現をこのように扱うことができます。

\b(get)?(count|Count)\b 

あなたは大文字小文字を区別しないスイッチを適用する必要があります。

\b assert position at a word boundary (^\w|\w$|\W\w|\w\W) 
1st Capturing group (get)? 
    Quantifier: ? Between zero and one time, as many times as possible, giving back as needed [greedy] 
    Note: A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data 
    get matches the characters get literally (case sensitive) 
2nd Capturing group (count|Count) 
    1st Alternative: count 
     count matches the characters count literally (case sensitive) 
    2nd Alternative: Count 
     Count matches the characters Count literally (case sensitive) 
\b assert position at a word boundary (^\w|\w$|\W\w|\w\W) 
0

javascriptで見た目の欠如を除いて、除外ルートを実行することは可能だとは思いません。

「既知の」プレフィックスは、が許可されたものであれば、とにかく簡単になりませんか?結局のところ、 "count"が入っているすべての普通の単語をリストすることはできません。あなたの知ら法的プレフィックスを許可し、残りの\b世話をしてみましょう:

  • パターン:(get|increment)count|\bcount\b //case insensitive

  • は交換してください:$1FOO

demo

+0

デモとして私の質問テキストを使用してsooo賢いでした! haha –

+0

あなたと排他的なセットの代わりにインクルードを使う@RudyTheHunterの例が、もっと難しくなります。それが使用されるケースの数は、それをスキップする必要がある場合はほんのわずかです。 –

関連する問題