RegexCompilationInfo 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
RegexCompilationInfo 클래스의 새 인스턴스를 초기화합니다.
오버로드
RegexCompilationInfo(String, RegexOptions, String, String, Boolean) |
어셈블리에 포함할 정규식에 대한 정보를 포함하는 RegexCompilationInfo 클래스의 새 인스턴스를 초기화합니다. |
RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan) |
어셈블리에 포함할 지정된 시간 제한 값의 정규식에 대한 정보를 포함하는 RegexCompilationInfo 클래스의 새 인스턴스를 초기화합니다. |
RegexCompilationInfo(String, RegexOptions, String, String, Boolean)
- Source:
- RegexCompilationInfo.cs
- Source:
- RegexCompilationInfo.cs
- Source:
- RegexCompilationInfo.cs
어셈블리에 포함할 정규식에 대한 정보를 포함하는 RegexCompilationInfo 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
- pattern
- String
컴파일할 정규식입니다.
- options
- RegexOptions
정규식을 컴파일할 때 사용할 정규식 옵션입니다.
- name
- String
컴파일된 정규식을 나타내는 형식의 이름입니다.
- fullnamespace
- String
새 형식이 속한 네임스페이스입니다.
- ispublic
- Boolean
컴파일된 정규식을 공개적으로 표시하려면 true
이고, 그렇지 않으면 false
입니다.
예외
name
이(가) Empty인 경우
예제
다음 예제에서는 두 단계로 컴파일된 정규식을 만들고 사용합니다.
첫 번째 단계에서는 다음 코드 예제를 컴파일하고 실행합니다.
RegexCompilationInfo 코드 예제의 생성자는 컴파일된 정규식을 정의합니다. 코드를 실행한 결과는 라는 컴파일된 정규식 형식 FishRegex
을 포함하는 FishRegex.dll 라는 어셈블리입니다.
// 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
두 번째 단계에서는 FishRegex.dll 대한 참조를 사용하여 다음 코드 예제를 컴파일한 다음 결과 실행 파일을 실행합니다. 실행 파일은 형식을 사용하여 FishRegex
대상 문자열과 일치하고 대상 문자열에서 일치 항목의 일치, 그룹, 캡처 그룹 및 인덱스 위치를 표시합니다.
// 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
'
설명
생성자의 각 매개 변수 RegexCompilationInfo(String, RegexOptions, String, String, Boolean) 는 클래스의 속성에 RegexCompilationInfo 직접 해당합니다. 모든 속성은 읽기/쓰기이므로 해당 값을 직접 할당할 수도 있습니다.
메서드는 CompileToAssembly 컴파일된 정규식을 포함하는 어셈블리를 생성합니다. 따라서 을 값 options
중 하나로 지정 Compiled 해서는 안 됩니다.
가 이true
면 ispublic
컴파일된 정규식 클래스에 공용 접근성이 부여됩니다. 즉, 모든 어셈블리에서 실행되는 코드에서 인스턴스화할 수 있습니다. 가 이false
면 ispublic
컴파일된 정규식 클래스가 (C#) 또는 Friend
(Visual Basic의 경우) 접근성이 제공됩니다 internal
. 즉, 정규식 클래스와 동일한 어셈블리에서 실행되는 코드에서만 인스턴스화할 수 있습니다.
호출자 참고
이 생성자는 만들어진 애플리케이션 도메인의 기본 제한 시간 값을 사용 하는 컴파일된 정규식을 만듭니다. 컴파일된 정규식 시간 제한 값을 애플리케이션 도메인에 대 한 정의 값을 사용 InfiniteMatchTimeout, 패턴 일치 작업을 시간 초과 되지 않도록 합니다. 컴파일된 정규식을 만들기 위한 권장 되는 생성자가 RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan), 시간 제한 간격을 설정할 수 있습니다.
적용 대상
RegexCompilationInfo(String, RegexOptions, String, String, Boolean, TimeSpan)
- Source:
- RegexCompilationInfo.cs
- Source:
- RegexCompilationInfo.cs
- Source:
- RegexCompilationInfo.cs
어셈블리에 포함할 지정된 시간 제한 값의 정규식에 대한 정보를 포함하는 RegexCompilationInfo 클래스의 새 인스턴스를 초기화합니다.
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)
매개 변수
- pattern
- String
컴파일할 정규식입니다.
- options
- RegexOptions
정규식을 컴파일할 때 사용할 정규식 옵션입니다.
- name
- String
컴파일된 정규식을 나타내는 형식의 이름입니다.
- fullnamespace
- String
새 형식이 속한 네임스페이스입니다.
- ispublic
- Boolean
컴파일된 정규식을 공개적으로 표시하려면 true
이고, 그렇지 않으면 false
입니다.
- matchTimeout
- TimeSpan
정규식에 대한 기본 시간 제한 간격입니다.
예외
name
이(가) Empty인 경우
matchTimeout
이 음수, 0 또는 약 24일보다 큽니다.
예제
다음 예제에서는 입력 문자열에서 동일한 문자가 두 개 이상 발생하는 것을 식별하는 라는 DuplicateChars
단일 컴파일된 정규식을 정의합니다. 컴파일된 정규식의 기본 제한 시간은 2초입니다. 예제를 실행하면 컴파일된 정규식을 포함하는 RegexLib.dll 라는 클래스 라이브러리를 만듭니다.
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
정규식 패턴 (\w)\1+
는 다음 테이블과 같이 정의됩니다.
무늬 | 설명 |
---|---|
(\w) |
단어 문자를 일치시키고 첫 번째 캡처 그룹에 할당합니다. |
\1+ |
캡처된 첫 번째 그룹의 값이 하나 이상 나타나는지 일치합니다. |
다음 예제에서는 정규식을 사용하여 DuplicatedChars
문자열 배열에서 중복 문자를 식별합니다. 생성자를 호출 DuplicatedChars
하면 제한 시간 간격이 .5초로 변경됩니다.
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
설명
생성자의 각 매개 변수 RegexCompilationInfo(String, RegexOptions, String, String, Boolean) 는 클래스의 속성에 RegexCompilationInfo 직접 해당합니다. 모든 속성은 읽기/쓰기이므로 해당 값을 직접 할당할 수도 있습니다.
메서드는 CompileToAssembly 컴파일된 정규식을 포함하는 어셈블리를 생성합니다. 따라서 을 값 options
중 하나로 지정 Compiled 해서는 안 됩니다.
가 이true
면 ispublic
컴파일된 정규식 클래스에 공용 접근성이 부여됩니다. 즉, 모든 어셈블리에서 실행되는 코드에서 인스턴스화할 수 있습니다. 가 이false
면 ispublic
컴파일된 정규식 클래스가 (C#) 또는 Friend
(Visual Basic의 경우) 접근성이 제공됩니다 internal
. 즉, 정규식 클래스와 동일한 어셈블리에서 실행되는 코드에서만 인스턴스화할 수 있습니다.
매개 변수는 matchTimeout
컴파일된 정규식의 기본 제한 시간 간격을 정의합니다. 이 값은 컴파일된 정규식 개체가 작업 시간이 초과되고 정규식 엔진이 다음 타이밍 검사 동안 예외를 throw RegexMatchTimeoutException 하기 전에 단일 일치 작업을 실행하는 대략적인 시간을 나타냅니다. 제한 시간 값에 대한 자세한 내용은 속성을 참조 MatchTimeout 하세요.
중요
컴파일된 정규식에 대한 기본 제한 시간 값을 항상 설정하는 것이 좋습니다. 정규식 라이브러리의 소비자는 이 생성자 오버로드에 새 시간 제한 간격을 TimeSpan 나타내는 값을 전달하여 해당 시간 제한 값을 재정의할 수 있습니다.
추가 정보
적용 대상
.NET