-2

文字列のセットは次のようになります。

1) anyNoOfcharacters< anycharacter> anyNoOfcharacters . 任意の文字数なし

2) anyNoOfcharacters < anychar > anyNoOfcharacters および ' #' (最後の文字列として)

3) anyNoOfcharacters " _ " anyNoOfcharacters と " # "

4) anyNoOfcharacters および anyNoOfdigits の後に " #" が続く

上記の一連の文字列をすべて検証できる単一の正規表現はありますか?

これは私がこれまでに行ったことです...

 Regex pattern = new Regex(@"^[a-zA-Z0-9\_]+[a-zA-Z0-9#.-] | [\b\w\d] |  ");

私の要件に従って、誰でも上記のパターンに条件を追加してください。

前もって感謝します..!!

4

2 に答える 2

1

要件に応じて、リストした 5 つの正確な文字列のいずれかに一致する正規表現を次に示します。これが意図したものでない場合は、明確にしてください。

 Regex pattern = new Regex(@"(ads<r>_aimDate50ms\.Good)|(ads<t>Valid#)|(tactics_priorityT)|(tactics_SelectedADS#)|(ads3bValid#)");

編集

あなたの要件はまだ非常に複雑です。いくつかの特定のルールを定義してみましょう。多分私たちは欲しいと思います:

  • 1 つ以上の文字、その後に続く
  • 0 個以上の文字、数字、またはアンダースコアの後に続く
  • 0 または 1#文字

- また -

  • 1 つ以上の文字、その後に続く
  • 0 個以上の文字、数字、またはアンダースコアの後に続く
  • 正確に 1<文字、その後に
  • 正確に 1 文字、その後に
  • 正確に 1>文字、その後に
  • 1 つ以上の文字、数字、アンダースコア、または.文字の後に続く
  • 0 または 1#文字

ここは球場ですか?これらのルールはあなたの例と一致しますが、それでも「正しくない」場合があります。これは、具体的に説明する必要があると私が言っていることです。パターンが何であるかを明確に説明できる場合は、正規表現を記述できます。パターンを記述する一連のルールを識別できない場合は、それを正規表現に変換する方法がありません。

質問を更新して、パターンの特定のルールを一覧表示できますか? パターンのすべての部分について、どのような種類の文字が期待されているか、何文字が連続して表示されるかを知る必要があります。たとえば、0 個以上、1 個以上、ちょうど 1 個などです。

編集2

あなたの更新された質問に基づいて、私はショットを撮ることができると思います。「anyNoOfCharacters」と言うとき、あなたはどの種類の文字かを明確にしませんでした. しかし、スペース、句読点などを含む、文字通りあらゆる種類の文字を意味する場合、正規表現はほとんどすべてに一致するため、あまり役に立ちません。したがって、その場合は文字のみを意味していると想定します。

これがあなたのルールです(「anyNoOfCharacters」に関する私の仮定とともに)正規表現に翻訳されています:

  1. [A-Za-z]*<.>[A-Za-z]*\.[A-Za-z]*
  2. [A-Za-z]*<.>[A-Za-z]*#
  3. [A-Za-z]*_[A-Za-z]*#
  4. [A-Za-z0-9]*#

( )これを単一の正規表現にするには、各ルールを括弧で囲み、それらの間に a を追加することで、用語を組み合わせることができ|ます。したがって、次のようになります。

 Regex pattern = new Regex(@"([A-Za-z]*<.>[A-Za-z]*\.[A-Za-z]*)|([A-Za-z]*<.>[A-Za-z]*#)|([A-Za-z]*_[A-Za-z]*#)|([A-Za-z0-9]*#)");

これは近いと思いますが、まだそこまでではないかもしれません。これを利用して、ニーズに合わせて改良できる場所は十分にありますか? そうでない場合は、さらに明確にしてください。

于 2013-03-21T05:02:54.693 に答える
0

これはあなたが望むものです

Regex pattern = new Regex(@"[^\s]+");

あなたのコメントに基づいてこれを試してください

Regex pattern = new Regex(@"(?:[^\s]*[_#\.][^\s]*)[^\s]+");
于 2013-03-21T05:09:04.437 に答える