VB.Net Tutorial/Regular Expressions/Regular Expressions — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 12:57, 26 мая 2010
Содержание
- 1 Count chars: Regex.Matches(quote, .)
- 2 Count line: Regex.Matches(quote, ".+\n*")
- 3 Every word replaced by another word
- 4 Match regular expression to string and print out all matches
- 5 Regex.CompileToAssembly
- 6 Regex Matches
- 7 Regex("\w+")
- 8 Replace first 3 digits
- 9 String split at commas
- 10 Using Regex method Replace: Replace one string with another
- 11 Using Regex method Replace: substituted for *
- 12 Word count
- 13 Word count: Regex.Matches(quote, "\w+")
Count chars: Regex.Matches(quote, .)
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim quote As String = _
"The important thing" & vbNewLine & _
"is not to stop questioning." & vbNewLine & _
"--Albert Einstein" & vbNewLine
Dim numChars As Integer = Regex.Matches(quote, ".").Count
Console.WriteLine(numChars)
End Sub
End Class
66
Count line: Regex.Matches(quote, ".+\n*")
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim quote As String = _
"The important thing" & vbNewLine & _
"is not to stop questioning." & vbNewLine & _
"--Albert Einstein" & vbNewLine
Dim numLines As Integer = Regex.Matches(quote, ".+\n*").Count
Console.WriteLine(numLines)
End Sub
End Class
3
Every word replaced by another word
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Console.WriteLine(Regex.Replace("This sentence ends in 5 stars *****", "\w+", "word"))
End Sub
End Class
word word word word word word *****
Match regular expression to string and print out all matches
Imports System.Text.RegularExpressions
Module Tester
Sub Main()
Dim myMatch As Match
Dim expression As Regex = New Regex("J.*\d[0-35-9]-\d\d-\d\d")
Dim string1 As String = "11-11-75" & _
vbCrLf & "is 11-05-68" & vbCrLf & _
"asdf 04-18-73" & vbCrLf & _
"fdsa 12-27-77"
For Each myMatch In expression.Matches(string1)
Console.WriteLine(myMatch.ToString())
Next
End Sub
End Module
Regex.CompileToAssembly
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim numPattern As String = _
"[-+]?([0-9]*\.)?[0-9]+([eE][-+]?[0-9]+)?"
Dim wordPattern As String = "\w+"
Dim whichNamespace As String = "NumbersRegex"
Dim isPublic As Boolean = True
Dim compNumbers As New RegexCompilationInfo(numPattern, _
RegexOptions.rupiled, "RgxNumbers", _
whichNamespace, isPublic)
Dim compWords As New RegexCompilationInfo(wordPattern, _
RegexOptions.rupiled, "RgxWords", whichNamespace, _
isPublic)
Dim compAll() As RegexCompilationInfo = _
{compNumbers, compWords}
Dim whichAssembly As New _
System.Reflection.AssemblyName("RgxNumbersWords")
Regex.rupileToAssembly(compAll, whichAssembly)
End Sub
End Class
Regex Matches
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim quote As String = "AA BB in"
Dim count1 As Integer
Dim count2 As Integer
Dim count3 As Integer
count1 = Regex.Matches(quote, "(in)+").Count
count2 = Split(quote, "in").Length - 1
Dim content As String = "in"
Dim position As Integer = -content.Length
Do
position = quote.IndexOf(content, position + content.Length)
If (position < 0) Then Exit Do
count3 += 1
Loop
Console.WriteLine(String.Format( _
"{0}{3}{1}{3}{2}", count1, count2, count3, vbNewLine))
End Sub
End Class
1 1 1
Regex("\w+")
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim quote As String = "The important thing is not to " & _
"stop questioning. --Albert Einstein"
Dim parser As New Regex("\w+")
Dim totalMatches As Integer = parser.Matches(quote).Count
Console.WriteLine(quote & vbNewLine & "Number words: " & _
totalMatches.ToString)
End Sub
End Class
The important thing is not to stop questioning. --Albert Einstein Number words: 10
Replace first 3 digits
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Console.WriteLine(New Regex("\d").Replace("1, 2, 3, 4, 5, 6, 7, 8", "digit", 3))
End Sub
End Class
digit, digit, digit, 4, 5, 6, 7, 8
String split at commas
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Console.WriteLine(Regex.Split("1, 2, 3, 4, 5, 6, 7, 8", ",\s*"))
End Sub
End Class
System.String[]
Using Regex method Replace: Replace one string with another
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Console.WriteLine(New Regex("stars").Replace("This sentence ends in 5 stars *****", "carets
))
End Sub
End Class
This sentence ends in 5 carets *****
Using Regex method Replace: substituted for *
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Console.WriteLine(Regex.Replace("This sentence ends in 5 stars *****", "\*", ""))
End Sub
End Class
This sentence ends in 5 stars ^^^^^
Word count
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim quote As String = "q d e w "
Do While (quote.IndexOf(Space(2)) >= 0)
quote = quote.Replace(Space(2), Space(1))
Loop
Dim wordCount As Integer = Split(quote, Space(1)).Length
Console.WriteLine(quote & vbNewLine & "Number of words: " & wordCount.ToString)
End Sub
End Class
q d e w Number of words: 5
Word count: Regex.Matches(quote, "\w+")
Imports System.Text.RegularExpressions
Public Class Tester
Public Shared Sub Main
Dim quote As String = _
"The important thing" & vbNewLine & _
"is not to stop questioning." & vbNewLine & _
"--Albert Einstein" & vbNewLine
Dim numWords As Integer = Regex.Matches(quote, "\w+").Count
Console.WriteLine(numWords)
End Sub
End Class
10