4

VB6(私は慣れていない)プロジェクトをC#4.0プロジェクトに変換する必要があります。プロジェクトには、文字列検証用の正規表現がいくつか含まれています。

どちらの場合も正規表現が同じように動作するかどうかを知る必要があるので、VB6プロジェクトからC#プロジェクトに正規表現文字列をコピーした場合、それらは同じように機能しますか?

私は正規表現の基本的な知識を持っており、正規表現の機能をほぼ読むことができますが、フレーバーなどについては、現時点では少し頭がおかしいです。

たとえば、これらの2行は同等ですか?

VB6:

isStringValid = (str Like "*[!0-9A-Z]*")

C#:

isStringValid = Regex.IsMatch(str, "*[!0-9A-Z]*");

ありがとう!

4

2 に答える 2

9

古いVBLike演算子は、外観にもかかわらず、正規表現インターフェイスではありません。それはグロブパターンマッチャーのようなものです。http://msdn.microsoft.com/en-us/library/swf8kaxw.aspxを参照してください

あなたの例では:

Like "*[!0-9A-Z]*"

任意の文字(ゼロ以上)で開始および終了する文字列と一致し、その後、中央のどこかで英数字と一致しません。これの正規表現は次のようになります。

/.*[^0-9A-Z].*/

編集あなたの質問に答えるために:いいえ、2つを交換して使用することはできません。Likeただし、のオペランドを適切な正規表現に変換するのはかなり簡単です。

Like       RegEx
========== ==========
?          .
*          .*
#          \d
[abc0-9]   [abc0-9]
[!abc0-9]  [^abc0-9]

これにはいくつかの注意点がありますが、それで始めてほとんどの場合をカバーできるはずです。

于 2012-10-10T14:00:43.020 に答える
-1

一言で言えば、そうです。

これらは同じです。いくつかの簡単なグーグルはあなたにもっと複雑な問題への答えを与えるはずです。

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/bce145b8-95d4-4be4-8b07-e8adee7286f1/

http://www.regular-expressions.info/dotnet.html

于 2012-10-10T13:59:58.440 に答える