VB.NET 正则表达式 0-9 和 a-z 不起作用?
VB.NET Regular expression 0-9 and a-z not working?
如何为数字和字母制作正则表达式?每当我输入它时,它只读取字符串而不是随机化。假设我输入 312 <-- 这将是无效的标识符,因为它的数字变量没有按顺序排列。在字母上,我尝试了 a123456789,所以每当我输入 a1、a2、a3 时,它都会读作标识符,因为它是按顺序排列的。我还想创建另一个结合数字和字母的变量。
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 - 无效标识符 // 无效,因为第一个字符是数字
- 运算符
cad - 标识符
- 运算符
c1b - 标识符
您可以将正则表达式模式用于数字和标识符 Regex.IsMatch
。
数字模式:
^
- 字符串开头
[0-9]*
- 0+ 位
\.?
- 一个可选的点
[0-9]+
- 1+ 位数
$
- 字符串结尾
标识符模式:
^
- 字符串开头
[a-zA-Z_]
- ASCII 字母或 _
[a-zA-Z0-9_]*
- 0+ ASCII 字母、数字或 _
$
- 字符串结尾。
将输入调暗为字符串 = "c1 + 2c + cad + c1b"
Dim symbol As String = "\s*([-+/=])\s"
Dim numbers As String = "^[0-9].?[0-9]+$"
Dim letters As String = "^[a-zA-Z_][a-zA-Z0-9_]$"
Dim substrings() As String = Regex.Split(输入,符号)
For Each match As String In substrings
If Regex.IsMatch(匹配, 符号) Then
Console.WriteLine(匹配 & " - 运算符")
ElseIf Regex.IsMatch(匹配, 数字) 然后
Console.WriteLine(匹配 & " - 数字")
ElseIf Regex.IsMatch(匹配, 字母) Then
Console.WriteLine(匹配 & " - 标识符")
别的
Console.WriteLine(匹配 & " - 无效标识符")
万一
下一个
看到VB.NET demo输出
c1 - identifier
+ - operator
2c - Invalid Identifier
+ - operator
cad - identifier
+ - operator
c1b - identifier
如何为数字和字母制作正则表达式?每当我输入它时,它只读取字符串而不是随机化。假设我输入 312 <-- 这将是无效的标识符,因为它的数字变量没有按顺序排列。在字母上,我尝试了 a123456789,所以每当我输入 a1、a2、a3 时,它都会读作标识符,因为它是按顺序排列的。我还想创建另一个结合数字和字母的变量。
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 - 无效标识符 // 无效,因为第一个字符是数字
- 运算符
cad - 标识符
- 运算符
c1b - 标识符
您可以将正则表达式模式用于数字和标识符 Regex.IsMatch
。
数字模式:
^
- 字符串开头[0-9]*
- 0+ 位\.?
- 一个可选的点[0-9]+
- 1+ 位数$
- 字符串结尾
标识符模式:
^
- 字符串开头[a-zA-Z_]
- ASCII 字母或_
[a-zA-Z0-9_]*
- 0+ ASCII 字母、数字或_
$
- 字符串结尾。将输入调暗为字符串 = "c1 + 2c + cad + c1b" Dim symbol As String = "\s*([-+/=])\s" Dim numbers As String = "^[0-9].?[0-9]+$" Dim letters As String = "^[a-zA-Z_][a-zA-Z0-9_]$"
Dim substrings() As String = Regex.Split(输入,符号)
For Each match As String In substrings If Regex.IsMatch(匹配, 符号) Then Console.WriteLine(匹配 & " - 运算符") ElseIf Regex.IsMatch(匹配, 数字) 然后 Console.WriteLine(匹配 & " - 数字") ElseIf Regex.IsMatch(匹配, 字母) Then Console.WriteLine(匹配 & " - 标识符") 别的 Console.WriteLine(匹配 & " - 无效标识符") 万一 下一个
看到VB.NET demo输出
c1 - identifier
+ - operator
2c - Invalid Identifier
+ - operator
cad - identifier
+ - operator
c1b - identifier