2

私には楽しい小さな仕事があります。次の場合、変数をtrueに設定する必要があります。

文字列が文字で終わるか、文字列の2桁目が「p」または「r」のいずれかです。

これまでのところ、私は持っています

var endingIsLetter = Regex.(myString.length - 1) ??? magic here.

何か助けはありますか?私の正規表現の相棒は死んだラップトップにいます。

編集-正規表現は必要ありません。これを行うのに最も簡単な方法だと思いました。どんな例でも大歓迎です。

4

4 に答える 4

5

なぜそのために正規表現を使用するのですか?

var flag = char.IsLetter(s[s.Length - 1]) || 
           s[1] == 'p' || 
           s[1] == 'r';
于 2013-01-11T01:59:54.567 に答える
3

.単一の文字を表し、^文字列の先頭のアンカーであり、$文字列の末尾のアンカーであり[pr]、角かっこで囲まれたリストの任意の1文字であることを思い出してください。

^.[pr]

「2番目の文字はpまたはrです。

[A-Za-z]$

「最後の文字は文字です」という意味です。

Console.WriteLine(Regex.IsMatch("abc123", "^.[pr]|[A-Za-z]$")); // False
Console.WriteLine(Regex.IsMatch("abc12x", "^.[pr]|[A-Za-z]$")); // True
Console.WriteLine(Regex.IsMatch("apc123", "^.[pr]|[A-Za-z]$")); // True
Console.WriteLine(Regex.IsMatch("arc123", "^.[pr]|[A-Za-z]$")); // True
Console.WriteLine(Regex.IsMatch("", "^.[pr]|[A-Za-z]$"));       // False

ideoneのデモ

于 2013-01-11T02:00:47.567 に答える
3

正規表現を使用する必要がありますか?またはこれはオプションですか?正規表現のないコードは実際には高速である可能性があるためです。:)

文字列の2番目の文字を一致させるには:文字^.[pr] 列の最後の文字を一致させるには:[a-z]$

組み合わせ:^.[pr]|[a-z]$

  • ^文字列の先頭に一致します
  • $文字列の終わりに一致します
  • .任意の文字に一致します(設定によっては改行を除く)
  • [...]「これらのいずれか」の選択肢を提供し、範囲も定義できます
  • [a-z]a範囲から。までの任意の文字を表しますz。これにはウムラウトのようなものは含まれないことに注意してください。

上記の正規表現では、大文字と小文字を区別しないマッチングが正しく機能することを想定していることに注意してください(そうでない場合は、大文字も追加する必要があります)。^.[PRpr]|[A-Za-z]$

正規表現の簡単なプレビューを取得するには(不明な場合に備えて)、RegexHeroTesterを使用します。

于 2013-01-11T02:03:41.750 に答える
0
var match = Regex.Matches( @"\w(p|r)+*\w", "Eppressio9n" )

ああ、私は今仕事に出かけなければならないので、ちょっとこれを突然やりました。

Regex.Matchesが返すものを忘れてしまいました。あなたがしなければならないのは、Regex.Matchesから返されたものがあるかどうかを確認することだけです。

お役に立てれば

于 2013-01-11T02:15:36.810 に答える