Representa una expresión regular inmutable.
Espacio de nombres: System.Text.RegularExpressions
Ensamblado: System (en system.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
Public Class Regex
Implements ISerializable
[SerializableAttribute]
public class Regex : ISerializable
[SerializableAttribute]
public ref class Regex : ISerializable
/** @attribute SerializableAttribute() */
public class Regex implements ISerializable
SerializableAttribute
public class Regex implements ISerializable
La clase Regex contiene varios métodos estáticos que permiten utilizar una expresión regular sin crear un objeto explícitamente un objeto Regex. Utilizar un método estático equivale a construir un objeto Regex, se utiliza una vez y luego se destruye.
La clase Regex es inmutable (de sólo lectura) y es inherentemente segura para la ejecución de subprocesos. Los objetos Regex pueden crearse en cualquier subproceso y los subprocesos pueden compartir dichos objetos. Para obtener más información, vea Seguridad para subprocesos.
En el ejemplo de código siguiente se ilustra el uso de una expresión regular para comprobar si una cadena tiene el formato correcto para representar un valor monetario. Observe el uso de los símbolos ^ y $ que encierran la expresión para indicar que toda la cadena, no sólo una subcadena, debe cumplir la expresión regular.
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main ()
{
// Define a regular expression for currency values.
Regex rx = new Regex(@"^-?\d+(\.\d{2})?$");
// Define some test strings.
string[] tests = {"-42", "19.99", "0.001", "100 USD"};
// Check each test string against the regular expression.
foreach (string test in tests)
{
if (rx.IsMatch(test))
{
Console.WriteLine("{0} is a currency value.", test);
}
else
{
Console.WriteLine("{0} is not a currency value.", test);
}
}
}
}
#using <System.dll>
using namespace System;
using namespace System::Text::RegularExpressions;
int main()
{
// Define a regular expression for currency values.
Regex^ rx = gcnew Regex( "^-?\\d+(\\.\\d{2})?$" );
// Define some test strings.
array<String^>^tests = {"-42","19.99","0.001","100 USD"};
// Check each test string against the regular expression.
System::Collections::IEnumerator^ myEnum = tests->GetEnumerator();
while ( myEnum->MoveNext() )
{
String^ test = safe_cast<String^>(myEnum->Current);
if ( rx->IsMatch( test ) )
{
Console::WriteLine( "{0} is a currency value.", test );
}
else
{
Console::WriteLine( "{0} is not a currency value.", test );
}
}
}
import System.*;
import System.Text.RegularExpressions.*;
public class Test
{
public static void main(String[] args)
{
// Define a regular expression for currency values.
Regex rx = new Regex("^-?\\d+(\\.\\d{2})?$");
// Define some test strings.
String tests[] = { "-42", "19.99", "0.001", "100 USD" };
// Check each test string against the regular expression.
for (int iCtr = 0; iCtr < tests.get_Length(); iCtr++) {
String test = (String)tests.get_Item(iCtr);
if (rx.IsMatch(test)) {
Console.WriteLine("{0} is a currency value.", test);
}
else {
Console.WriteLine("{0} is not a currency value.", test);
}
}
} //main
} //Test
En el ejemplo de código siguiente se ilustra el uso de una expresión regular para comprobar si aparecen palabras repetidas dentro de una cadena. Observe el uso de la construcción (?<word>) para nombrar un grupo y el uso de la construcción (\k<word>) para hacer referencia a ese grupo más adelante en la expresión.
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main ()
{
// Define a regular expression for repeated words.
Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Define a test string.
string text = "The the quick brown fox fox jumped over the lazy dog dog.";
// Find matches.
MatchCollection matches = rx.Matches(text);
// Report the number of matches found.
Console.WriteLine("{0} matches found.", matches.Count);
// Report on each match.
foreach (Match match in matches)
{
string word = match.Groups["word"].Value;
int index = match.Index;
Console.WriteLine("{0} repeated at position {1}", word, index);
}
}
}
#using <System.dll>
using namespace System;
using namespace System::Text::RegularExpressions;
int main()
{
// Define a regular expression for repeated words.
Regex^ rx = gcnew Regex( "\\b(?<word>\\w+)\\s+(\\k<word>)\\b",static_cast<RegexOptions>(RegexOptions::Compiled | RegexOptions::IgnoreCase) );
// Define a test string.
String^ text = "The the quick brown fox fox jumped over the lazy dog dog.";
// Find matches.
MatchCollection^ matches = rx->Matches( text );
// Report the number of matches found.
Console::WriteLine( "{0} matches found.", matches->Count );
// Report on each match.
for each (Match^ match in matches)
{
String^ word = match->Groups["word"]->Value;
int index = match->Index;
Console::WriteLine("{0} repeated at position {1}", word, index);
}
}
import System.*;
import System.Text.RegularExpressions.*;
public class Test
{
public static void main(String[] args)
{
// Define a regular expression for repeated words.
Regex rx = new Regex("\\b(?<word>\\w+)\\s+(\\k<word>)\\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// Define a test string.
String text = "The the quick brown fox fox jumped over the "
+ "lazy dog dog.";
// Find matches.
MatchCollection matches = rx.Matches(text);
// Report the number of matches found.
Console.WriteLine("{0} matches found.", (Int32)matches.get_Count());
// Report on each match.
for (int iCtr = 0; iCtr < matches.get_Count(); iCtr++) {
Match match = matches.get_Item(iCtr);
String word = match.get_Groups().get_Item("word").get_Value();
int index = match.get_Index();
Console.WriteLine("{0} repeated at position {1}", word,
(Int32)index);
}
} //main
} //Test
System.Object
System.Text.RegularExpressions.Regex
Clases derivadas
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.
.NET Framework
Compatible con: 3.0, 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0, 1.0
XNA Framework
Compatible con: 1.0