RegexCompilationInfo Konstruktory
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Inicializuje novou instanci RegexCompilationInfo třídy.
Přetížení
RegexCompilationInfo(String, RegexOptions, String, String, Boolean) |
Inicializuje novou instanci RegexCompilationInfo třídy, která obsahuje informace o regulární výraz, který má být zahrnut do sestavení. |
RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan) |
Inicializuje novou instanci RegexCompilationInfo třídy, která obsahuje informace o regulární výraz se zadanou hodnotou časového limitu, která má být zahrnuta do sestavení. |
RegexCompilationInfo(String, RegexOptions, String, String, Boolean)
- Zdroj:
- RegexCompilationInfo.cs
- Zdroj:
- RegexCompilationInfo.cs
- Zdroj:
- RegexCompilationInfo.cs
Inicializuje novou instanci RegexCompilationInfo třídy, která obsahuje informace o regulární výraz, který má být zahrnut do sestavení.
public:
RegexCompilationInfo(System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, System::String ^ name, System::String ^ fullnamespace, bool ispublic);
public RegexCompilationInfo (string pattern, System.Text.RegularExpressions.RegexOptions options, string name, string fullnamespace, bool ispublic);
new System.Text.RegularExpressions.RegexCompilationInfo : string * System.Text.RegularExpressions.RegexOptions * string * string * bool -> System.Text.RegularExpressions.RegexCompilationInfo
Public Sub New (pattern As String, options As RegexOptions, name As String, fullnamespace As String, ispublic As Boolean)
Parametry
- pattern
- String
Regulární výraz, který se má zkompilovat.
- options
- RegexOptions
Možnosti regulárního výrazu, které se mají použít při kompilaci regulárního výrazu.
- name
- String
Název typu, který představuje zkompilovaný regulární výraz.
- fullnamespace
- String
Obor názvů, ke kterému nový typ patří.
- ispublic
- Boolean
true
zviditelnění kompilovaného regulárního výrazu veřejně; v opačném případě . false
Výjimky
name
je Empty.
Příklady
Následující příklad vytvoří a použije kompilovaný regulární výraz ve dvou krocích.
V prvním kroku zkompilujte a spusťte následující příklad kódu. Konstruktor RegexCompilationInfo v příkladu kódu definuje zkompilovaný regulární výraz. Výsledkem spuštění kódu je sestavení s názvem FishRegex.dll, které obsahuje zkompilovaný typ regulárního výrazu s názvem FishRegex
.
// This code example demonstrates the RegexCompilationInfo constructor
// and the Regex.CompileToAssembly() method.
// compile: csc genFishRegex.cs
namespace MyApp
{
using System;
using System.Reflection;
using System.Text.RegularExpressions;
class GenFishRegEx
{
public static void Main()
{
// Pattern = Group matches one or more word characters,
// one or more white space characters,
// group matches the string "fish".
string pat = @"(\w+)\s+(fish)";
// Create the compilation information.
// Case-insensitive matching; type name = "FishRegex";
// namespace = "MyApp"; type is public.
RegexCompilationInfo rci = new RegexCompilationInfo(
pat, RegexOptions.IgnoreCase,
"FishRegex", "MyApp", true);
// Setup to compile.
AssemblyName an = new AssemblyName();
an.Name = "FishRegex";
RegexCompilationInfo[] rciList = { rci };
// Compile the regular expression.
Regex.CompileToAssembly(rciList, an);
}
}
}
' This code example demonstrates the RegexCompilationInfo constructor
' and the Regex.CompileToAssembly() method.
' compile: csc genFishRegex.cs
Imports System.Reflection
Imports System.Text.RegularExpressions
Class GenFishRegEx
Public Shared Sub Main()
' Pattern = Group matches one or more word characters,
' one or more white space characters,
' group matches the string "fish".
Dim pat As String = "(\w+)\s+(fish)"
' Create the compilation information.
' Case-insensitive matching; type name = "FishRegex";
' namespace = "MyApp"; type is public.
Dim rci As New RegexCompilationInfo(pat, RegexOptions.IgnoreCase, _
"FishRegex", "MyApp", True)
' Setup to compile.
Dim an As New AssemblyName()
an.Name = "FishRegex"
Dim rciList As RegexCompilationInfo() = New RegexCompilationInfo() { rci }
' Compile the regular expression.
Regex.CompileToAssembly(rciList, an)
End Sub
End Class
Ve druhém kroku zkompilujte následující příklad kódu pomocí odkazu na FishRegex.dll a pak spusťte výsledný spustitelný soubor. Spustitelný soubor odpovídá cílovému řetězci pomocí FishRegex
typu a zobrazuje shodu, skupinu, skupinu zachycení a pozici indexu shod v cílovém řetězci.
// This code example demonstrates the RegexCompilationInfo constructor.
// Execute this code example after executing genFishRegex.exe.
// compile: csc /r:FishRegex.dll useFishRegex.cs
namespace MyApp
{
using System;
using System.Reflection;
using System.Text.RegularExpressions;
class UseFishRegEx
{
public static void Main()
{
// Match against the following target string.
string targetString = "One fish two fish red fish blue fish";
int matchCount = 0;
FishRegex f = new FishRegex();
// Display the target string.
Console.WriteLine("\nInput string = \"" + targetString + "\"");
// Display each match, capture group, capture, and match position.
foreach (Match m in f.Matches(targetString))
{
Console.WriteLine("\nMatch(" + (++matchCount) + ")");
for (int i = 1; i <= 2; i++)
{
Group g = m.Groups[i];
Console.WriteLine("Group(" + i + ") = \"" + g + "\"");
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
System.Console.WriteLine(
"Capture(" + j + ") = \"" + c + "\", Position = " + c.Index);
}
}
}
}
}
}
/*
This code example produces the following results:
Input string = "One fish two fish red fish blue fish"
Match(1)
Group(1) = "One"
Capture(0) = "One", Position = 0
Group(2) = "fish"
Capture(0) = "fish", Position = 4
Match(2)
Group(1) = "two"
Capture(0) = "two", Position = 9
Group(2) = "fish"
Capture(0) = "fish", Position = 13
Match(3)
Group(1) = "red"
Capture(0) = "red", Position = 18
Group(2) = "fish"
Capture(0) = "fish", Position = 22
Match(4)
Group(1) = "blue"
Capture(0) = "blue", Position = 27
Group(2) = "fish"
Capture(0) = "fish", Position = 32
*/
' This code example demonstrates the RegexCompilationInfo constructor.
' Execute this code example after executing genFishRegex.exe.
' compile: vbc /r:FishRegex.dll useFishRegex.vb
Imports System.Reflection
Imports System.Text.RegularExpressions
Class UseFishRegEx
Public Shared Sub Main()
' Match against the following target string.
Dim targetString As String = "One fish two fish red fish blue fish"
Dim matchCount As Integer = 0
Dim f As New MyApp.FishRegex()
' Display the target string.
Console.WriteLine(vbLf & "Input string = """ & targetString & """")
' Display each match, capture group, capture, and match position.
Dim m As Match
For Each m In f.Matches(targetString)
matchCount = matchCount + 1
Console.WriteLine(vbLf & "Match(" & matchCount & ")")
Dim i As Integer
For i = 1 to 2
Dim g As Group = m.Groups(i)
Console.WriteLine("Group(" & i & ") = """ & g.ToString() & """")
Dim cc As CaptureCollection = g.Captures
Dim j As Integer
For j = 0 To cc.Count-1
Dim c As Capture = cc(j)
System.Console.WriteLine("Capture(" & j & ") = """ & c.ToString() & _
""", Position = " & c.Index)
Next j
Next i
Next m
End Sub
End Class
'
'This code example produces the following results:
'
'Input string = "One fish two fish red fish blue fish"
'
'Match(1)
'Group(1) = "One"
'Capture(0) = "One", Position = 0
'Group(2) = "fish"
'Capture(0) = "fish", Position = 4
'
'Match(2)
'Group(1) = "two"
'Capture(0) = "two", Position = 9
'Group(2) = "fish"
'Capture(0) = "fish", Position = 13
'
'Match(3)
'Group(1) = "red"
'Capture(0) = "red", Position = 18
'Group(2) = "fish"
'Capture(0) = "fish", Position = 22
'
'Match(4)
'Group(1) = "blue"
'Capture(0) = "blue", Position = 27
'Group(2) = "fish"
'Capture(0) = "fish", Position = 32
'
Poznámky
Každý parametr konstruktoru RegexCompilationInfo(String, RegexOptions, String, String, Boolean) přímo odpovídá vlastnosti RegexCompilationInfo třídy. Vzhledem k tomu, že všechny vlastnosti jsou pro čtení a zápis, je možné jejich hodnoty přiřadit také přímo.
Metoda CompileToAssembly vygeneruje sestavení, které obsahuje zkompilované regulární výrazy. Proto byste neměli zadávat Compiled jako jednu z hodnot options
.
Pokud ispublic
je true
, zkompilované třídě regulárního výrazu je přidělena veřejná přístupnost. To znamená, že může být vytvořena instance z kódu, který se spustí v libovolném sestavení. Pokud ispublic
je false
, je zkompilovaná třída regulárního výrazu daná internal
(v jazyce C#) nebo Friend
(v jazyce Visual Basic) přístupnost. To znamená, že může být vytvořena pouze z kódu, který se spouští ve stejném sestavení jako třída regulárního výrazu.
Poznámky pro volající
Tento konstruktor vytvoří kompilovaný regulární výraz, který používá výchozí hodnotu časového limitu domény aplikace, ve které je vytvořen. Pokud je pro doménu aplikace definována hodnota časového limitu, použije kompilovaný regulární výraz hodnotu InfiniteMatchTimeout, která brání vypršení časového limitu operace porovnávání vzorů. Doporučený konstruktor pro vytvoření kompilovaného regulárního výrazu je RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan), který umožňuje nastavit interval časového limitu.
Platí pro
RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan)
- Zdroj:
- RegexCompilationInfo.cs
- Zdroj:
- RegexCompilationInfo.cs
- Zdroj:
- RegexCompilationInfo.cs
Inicializuje novou instanci RegexCompilationInfo třídy, která obsahuje informace o regulární výraz se zadanou hodnotou časového limitu, která má být zahrnuta do sestavení.
public:
RegexCompilationInfo(System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, System::String ^ name, System::String ^ fullnamespace, bool ispublic, TimeSpan matchTimeout);
public RegexCompilationInfo (string pattern, System.Text.RegularExpressions.RegexOptions options, string name, string fullnamespace, bool ispublic, TimeSpan matchTimeout);
new System.Text.RegularExpressions.RegexCompilationInfo : string * System.Text.RegularExpressions.RegexOptions * string * string * bool * TimeSpan -> System.Text.RegularExpressions.RegexCompilationInfo
Public Sub New (pattern As String, options As RegexOptions, name As String, fullnamespace As String, ispublic As Boolean, matchTimeout As TimeSpan)
Parametry
- pattern
- String
Regulární výraz, který se má zkompilovat.
- options
- RegexOptions
Možnosti regulárního výrazu, které se mají použít při kompilaci regulárního výrazu.
- name
- String
Název typu, který představuje zkompilovaný regulární výraz.
- fullnamespace
- String
Obor názvů, ke kterému nový typ patří.
- ispublic
- Boolean
true
zviditelnění kompilovaného regulárního výrazu veřejně; v opačném případě . false
- matchTimeout
- TimeSpan
Výchozí interval časového limitu regulárního výrazu.
Výjimky
name
je Empty.
matchTimeout
je záporná, nulová nebo větší než přibližně 24 dnů.
Příklady
Následující příklad definuje jeden kompilovaný regulární výraz s názvem DuplicateChars
, který identifikuje dva nebo více výskytů stejného znaku ve vstupním řetězci. Zkompilovaný regulární výraz má výchozí časový limit 2 sekund. Při spuštění příkladu vytvoří knihovnu tříd s názvem RegexLib.dll, která obsahuje zkompilovaný regulární výraz.
using System;
using System.Reflection;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Match two or more occurrences of the same character.
string pattern = @"(\w)\1+";
// Use case-insensitive matching.
var rci = new RegexCompilationInfo(pattern, RegexOptions.IgnoreCase,
"DuplicateChars", "CustomRegexes",
true, TimeSpan.FromSeconds(2));
// Define an assembly to contain the compiled regular expression.
var an = new AssemblyName();
an.Name = "RegexLib";
RegexCompilationInfo[] rciList = { rci };
// Compile the regular expression and create the assembly.
Regex.CompileToAssembly(rciList, an);
}
}
Imports System.Reflection
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
' Match two or more occurrences of the same character.
Dim pattern As String = "(\w)\1+"
' Use case-insensitive matching.
Dim rci As New RegexCompilationInfo(pattern, RegexOptions.IgnoreCase,
"DuplicateChars", "CustomRegexes",
True, TimeSpan.FromSeconds(2))
' Define an assembly to contain the compiled regular expression.
Dim an As New AssemblyName()
an.Name = "RegexLib"
Dim rciList As RegexCompilationInfo() = New RegexCompilationInfo() { rci }
' Compile the regular expression and create the assembly.
Regex.CompileToAssembly(rciList, an)
End Sub
End Module
Vzor (\w)\1+
regulárního výrazu je definovaný tak, jak je znázorněno v následující tabulce.
Vzor | Description |
---|---|
(\w) |
Spárujte libovolný znak slova a přiřaďte ho k první skupině zachycení. |
\1+ |
Porovná jeden nebo více výskytů hodnoty první zachycené skupiny. |
Následující příklad používá DuplicatedChars
regulární výraz k identifikaci duplicitních znaků v řetězcovém poli. Když zavolá DuplicatedChars
konstruktor, změní časový limit interval na 0,5 sekund.
using CustomRegexes;
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
var rgx = new DuplicateChars(TimeSpan.FromSeconds(.5));
string[] values = { "Greeeeeat", "seed", "deed", "beam",
"loop", "Aardvark" };
// Display regex information.
Console.WriteLine("Regular Expression Pattern: {0}", rgx);
Console.WriteLine("Regex timeout value: {0} seconds\n",
rgx.MatchTimeout.TotalSeconds);
// Display matching information.
foreach (var value in values) {
Match m = rgx.Match(value);
if (m.Success)
Console.WriteLine("'{0}' found in '{1}' at positions {2}-{3}",
m.Value, value, m.Index, m.Index + m.Length - 1);
else
Console.WriteLine("No match found in '{0}'", value);
}
}
}
// The example displays the following output:
// Regular Expression Pattern: (\w)\1+
// Regex timeout value: 0.5 seconds
//
// //eeeee// found in //Greeeeeat// at positions 2-6
// //ee// found in //seed// at positions 1-2
// //ee// found in //deed// at positions 1-2
// No match found in //beam//
// //oo// found in //loop// at positions 1-2
// //Aa// found in //Aardvark// at positions 0-1
Imports CustomRegexes
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim rgx As New DuplicateChars(TimeSpan.FromSeconds(.5))
Dim values() As String = { "Greeeeeat", "seed", "deed", "beam",
"loop", "Aardvark" }
' Display regex information.
Console.WriteLine("Regular Expression Pattern: {0}", rgx)
Console.WriteLine("Regex timeout value: {0} seconds",
rgx.MatchTimeout.TotalSeconds)
Console.WriteLine()
' Display matching information.
For Each value In values
Dim m As Match = rgx.Match(value)
If m.Success Then
Console.WriteLine("'{0}' found in '{1}' at positions {2}-{3}",
m.Value, value, m.Index, m.Index + m.Length - 1)
Else
Console.WriteLine("No match found in '{0}'", value)
End If
Next
End Sub
End Module
' The example displays the following output:
' Regular Expression Pattern: (\w)\1+
' Regex timeout value: 0.5 seconds
'
' 'eeeee' found in 'Greeeeeat' at positions 2-6
' 'ee' found in 'seed' at positions 1-2
' 'ee' found in 'deed' at positions 1-2
' No match found in 'beam'
' 'oo' found in 'loop' at positions 1-2
' 'Aa' found in 'Aardvark' at positions 0-1
Poznámky
Každý parametr konstruktoru RegexCompilationInfo(String, RegexOptions, String, String, Boolean) přímo odpovídá vlastnosti RegexCompilationInfo třídy. Vzhledem k tomu, že všechny vlastnosti jsou pro čtení a zápis, je možné jejich hodnoty přiřadit také přímo.
Metoda CompileToAssembly vygeneruje sestavení, které obsahuje zkompilované regulární výrazy. Proto byste neměli zadávat Compiled jako jednu z hodnot options
.
Pokud ispublic
je true
, zkompilované třídě regulárního výrazu je přidělena veřejná přístupnost. To znamená, že může být vytvořena instance z kódu, který se spustí v libovolném sestavení. Pokud ispublic
je false
, je zkompilovaná třída regulárního výrazu daná internal
(v jazyce C#) nebo Friend
(v jazyce Visual Basic) přístupnost. To znamená, že může být vytvořena pouze z kódu, který se spouští ve stejném sestavení jako třída regulárního výrazu.
Parametr matchTimeout
definuje výchozí interval časového limitu pro kompilovaný regulární výraz. Tato hodnota představuje přibližnou dobu, po kterou kompilovaný objekt regulárního výrazu provede jednu odpovídající operaci před vypršením časového limitu operace a modul regulárních výrazů RegexMatchTimeoutException vyvolá výjimku během další kontroly časování. Další informace o hodnotě časového limitu najdete ve MatchTimeout vlastnosti .
Důležité
Doporučujeme vždy nastavit výchozí hodnotu časového limitu pro zkompilovaný regulární výraz. Příjemci knihovny regulárních výrazů mohou tuto hodnotu časového limitu přepsat předáním TimeSpan hodnoty, která představuje nový interval časového limitu tomuto přetížení konstruktoru.