回答:
量指定子の完全なリストは次のとおりです(http://www.regular-expressions.info/reference.htmlを参照):
?、??-0または1回の出現(??怠惰、?貪欲)*、*?-任意の数の発生+、+?-少なくとも1つの発生{n}-正確にn発生{n,m}- nのm発生箇所、包括的{n,m}?-発生nするm、怠惰な{n,}、{n,}?-少なくともn発生「正確にNまたはM」を取得するには、m、nが特別でない限り、定量化された正規表現を2回記述する必要があります。
X{n,m} もし m = n+1(?:X{n}){1,2} もし m = 2n?:ifのm = 2n例でなぜ必要なのですか?私にとっては、それなしで問題なく動作するようです。
                    ?:、グループはキャプチャグループになります。正規表現エンジンが必要としないものを記憶することは別として、このグループの後にキャプチャグループがある場合、それらのIDは変更されます。置換に正規表現を使用する場合は、置換を調整する必要があります。
                    いいえ、そのような数量詞はありません。ただし、バックトラックの問題/X{m}(X{m-n})?/を防ぐために再構成します。
TLDR; (?<=[^x]|^)(x{n}|x{m})(?:[^x]|$)
「xn回」または「xm回」が必要なようですが、正規表現への直訳は次のようになる(x{n}|x{m}).
と思いますhttps://regex101.com/r/vH7yL5/1
または、mを超える「x」のシーケンスを使用できる場合(m> nと想定)、「「x」なし」と「xなし」を追加して、次のように変換[^x](x{n}|x{m})[^x]できます。 「x」の後ろと後ろには常にキャラクターがいると仮定します。あなたがここで見ることができるように:https : //regex101.com/r/bB2vH2/1
これをに変更して(?:[^x]|^)(x{n}|x{m})(?:[^x]|$)、「 'x'がないか、次の行の先頭に続く」、「 'x'がない、または行の終わりが続く」に変換できます。しかし、それでも、https://regex101.com/r/を見るとわかるように、2つのシーケンスの間に文字が1つだけある場合は一致しません(最初の一致の後には文字が必要で、2番目の文字はその前にあるため)。 oC5oJ4 / 1
最後に、1文字の遠い一致に一致させるには、「後の「x」なし」に前向きの肯定(?=)を追加するか、「前の「x」前」に後ろ向きの肯定(?<=)を追加します。このように:https : //regex101.com/r/mC4uX3/1
(?<=[^x]|^)(x{n}|x{m})(?:[^x]|$)
このようにして、必要な「x」の正確な数のみを照合します。
Enhardenedの回答を見ると、最後から2番目の表現は、間に1文字しかないシーケンスとは一致しないと述べています。先読み/後読みを使用せずにこれを修正する簡単な方法があります。これは、開始/終了文字を境界文字に置き換えることです。これにより、開始/終了を含む単語の境界と照合できます。したがって、適切な式は次のようになります。
(?:[^x]|\b)(x{n}|x{m})(?:[^x]|\b)
あなたがここで見ることができるように:https : //regex101.com/r/oC5oJ4/2。
非常に古い投稿ですが、役立つかもしれないsthを寄稿したいと思います。私は質問で述べたとおりに試してみましたが、うまくいきますが、落とし穴があります。数量の順序が重要です。このことを考慮:
#[a-f0-9]{6}|#[a-f0-9]{3}
これにより、16進数のカラーコード(3桁または6桁の長さ)がすべて検出されます。でもこのようにひっくり返すと
#[a-f0-9]{3}|#[a-f0-9]{6}
3桁の数字、または6桁の数字の最初の3桁のみが検索されます。これは理にかなっており、正規表現のプロはこれをすぐに見つけるかもしれませんが、多くの人にとってこれは独特の振る舞いかもしれません。順序に関係なくこのトラップを回避できるいくつかの高度なRegex機能がありますが、すべてのユーザーがRegexパターンに精通しているわけではありません。
Xは、一般的なmで得られる最高のものですn。