1

String のリストを取得しました。すべての String に特定の部分文字列が含まれているかどうかを確認したいと考えています。

問題は次のとおりです。プレースホルダーを許可する必要があります。

例: 検索対象 "customer-id", "customer id", "customers id" -> 検索文字列は次のようになります"customer{2}id"({2} はプレースホルダー文字の数を表します -> 0 から 2 の間)。

もちろんこれではうまくいきません

teststring.indexof("customer{2}id")

また試してみました:

Dim r as new Regex("customer??id")

しかし、これはネストされた修飾子の何か例外をスローするだけです。私は正規表現のオタクではないので、助けていただければ幸いです。

4

2 に答える 2

0

私があなたを正しく理解していれば、次のようなことを試すことができます:

customer.{0,2}id

これは、 で始まり、customerその後に 0 ~ 2 文字が続く文字列を検索しidます。

したがって、基本的にあなたの例のcustomer.{0,n}id場所はどこですか: .nindexofcustomer{n}id

.は任意の文字 (状況によっては改行を含む) に一致することに注意してください。

于 2013-03-13T12:07:26.413 に答える
0

?は、正規表現の量指定子です (1 文字のプレースホルダーではありません)。つまり、前の要素を量化します。それは、キャラクター、キャラクタークラス、またはグループです。

正規表現には 4 つの量指定子が存在します。

  1. {x,y}ここで、x は一致する最小量で、y は一致する最大量です。{4}正確に 4 回の出現に一致する1 桁のみを入力することもできます。

  2. +1つ以上を意味し、と同じ{1,}

  3. *ゼロ以上を意味し、と同じです{0,}

  4. ?0 または 1 を意味し、次と同じです。{0,1}

次のようなものが必要だと思います

customer.{0,2}id

.正規表現の特殊文字であり、任意の文字に一致します (改行を除く)

したがって、この正規表現は次のような文字列と一致します。

customerid
customer id
customer-id
customer#+id
customerXXid

をより定義された文字クラスに置き換えることができ.ます。たとえば、スペースとハイフンのみを許可する場合は、独自の文字クラスを作成し、許可する文字を追加します。

customer[ -]{0,2}id

この正規表現は、次のような文字列と一致します。

customerid
顧客 ID
顧客ID
顧客 ID
顧客 ID

さらに詳しい情報:

于 2013-03-13T12:09:42.740 に答える