2017-01-06 6 views
1

数字と文字の正規表現を作るにはどうすればいいですか?私が入力するたびに、ランダム化しないために文字列を読み込むだけです。私は入力と言うことができます - それは、number変数が順不同であるため無効な識別子になります。文字の上で私はa123456789を試しました。なぜなら、私はa1、a2、a3を入力すると、その順序で識別子として読み取るのです。数字と文字を組み合わせる別の変数を作成したかったのです。VB.NET正規表現0-9およびa-zは機能しませんか?

Dim input As String = txtInput.Text 
    Dim symbol As String = "\s*([-+*/=])\s*" 
    Dim numbers As String = "123456789" //("[0-9]") <-- doesnt work? 
    Dim letters As String = "abcdefghijklmnopqrstuvwxyz" // ("[a-z]")<-also 

    Dim substrings() As String = Regex.Split(input, symbol) 

    For Each match As String In substrings 
     If symbol.Contains(match) Then 
      lstOutput.Items.Add(match & " - operator") 
     ElseIf numbers.Contains(match) Then 
      lstOutput.Items.Add(match & " - number") 
     ElseIf letters.Contains(match) Then 
      lstOutput.Items.Add(match & " - identifier") 
     Else 
      lstOutput.Items.Add(match & " - Invalid Identifier") 
     End If 
    Next 

入力:C1 + 2C + CAD + C1B

期待出力:

C1 - 識別子

    • オペレータ

2cは - 1文字目は数

    • オペレータ無効な識別子//無効なため

CAD - 識別子

    • オペレータ

C1B - 識別子

答えて

1

あなたはRegex.IsMatchで数字や識別子のための正規表現パターンを使用してもよいです。

番号パターン

  • ^ - 文字列の先頭
  • [0-9]* - 0+数字
  • \.? - 任意ドット
  • [0-9]+ - 1+数字
  • $ - エンド文字列の

識別子パターン

  • ^ - ASCII文字または_
  • [a-zA-Z0-9_]* - - 0+ ASCII文字、数字または_
  • $

  • [a-zA-Z_]文字列
  • の開始 - 文字列の終わり。

    列=文字列として= "C1 + 2C + CAD + C1B" 暗いシンボルとして薄暗い入力 - 文字列=「^ [として "\ * S([+ /=])\ S" 薄暗い番号を0-9] 。?[0-9] + $」 暗い文字として文字列= "^ [-ZA-Z _] [-ZA-Z0-9_] $"

    薄暗いのサブストリング()ストリング= Regex.Split(入力シンボル)サブストリング の文字列として、各マッチについて

    として場合Regex.IsMatch(一致、シンボル)次に Console.WriteLineを(一致& " - オペレータ") のElseIf Regex.IsMatch(一致、番号)そして Console.WriteLineを(一致& " - 番号") のElseIf Regex.IsMatch(一致、文字)次に Console.WriteLineを(一致& " - 識別子") エルス ます。Console.WriteLine(試合&" - 無効な識別子」) エンド 次

VB.NET demo

c1 - identifier 
+ - operator 
2c - Invalid Identifier 
+ - operator 
cad - identifier 
+ - operator 
c1b - identifier 
を出力表示された場合
関連する問題