Regex.Replace Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Dalam string input tertentu, mengganti string yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan.
Overload
Replace(String, String, String, RegexOptions) |
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string pengganti yang ditentukan. Opsi yang ditentukan mengubah operasi pencocokan. |
Replace(String, String, String, RegexOptions, TimeSpan) |
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string pengganti yang ditentukan. Parameter tambahan menentukan opsi yang memodifikasi operasi pencocokan dan interval waktu habis jika tidak ada kecocokan yang ditemukan. |
Replace(String, MatchEvaluator, Int32, Int32) |
Dalam substring input tertentu, mengganti jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string yang dikembalikan oleh delegasi MatchEvaluator. |
Replace(String, String, MatchEvaluator, RegexOptions) |
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator. Opsi yang ditentukan mengubah operasi pencocokan. |
Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan) |
Dalam string input tertentu, mengganti semua substring yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator. Parameter tambahan menentukan opsi yang memodifikasi operasi pencocokan dan interval waktu habis jika tidak ada kecocokan yang ditemukan. |
Replace(String, String, Int32, Int32) |
Dalam substring input tertentu, menggantikan jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan. |
Replace(String, String, String) |
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string pengganti yang ditentukan. |
Replace(String, String, MatchEvaluator) |
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator. |
Replace(String, String, Int32) |
Dalam string input tertentu, mengganti jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan. |
Replace(String, MatchEvaluator) |
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator. |
Replace(String, String) |
Dalam string input tertentu, mengganti semua string yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan. |
Replace(String, MatchEvaluator, Int32) |
Dalam string input tertentu, mengganti jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string yang dikembalikan oleh delegasi MatchEvaluator. |
Replace(String, String, String, RegexOptions)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string pengganti yang ditentukan. Opsi yang ditentukan mengubah operasi pencocokan.
public:
static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::String ^ replacement, System::Text::RegularExpressions::RegexOptions options);
public static string Replace (string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options);
static member Replace : string * string * string * System.Text.RegularExpressions.RegexOptions -> string
Public Shared Function Replace (input As String, pattern As String, replacement As String, options As RegexOptions) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- pattern
- String
Pola ekspresi reguler yang cocok.
- replacement
- String
String pengganti.
- options
- RegexOptions
Kombinasi bitwise dari nilai enumerasi yang menyediakan opsi untuk pencocokan.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pattern
tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
Terjadi kesalahan penguraian ekspresi reguler.
input
, pattern
, atau replacement
null
.
options
bukan kombinasi bitwise yang valid dari nilai RegexOptions.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggunakan metode Replace(String, String, String, RegexOptions) untuk mengganti nama komputer lokal dan drive di jalur UNC dengan jalur file lokal. Ekspresi reguler menggunakan properti Environment.MachineName untuk menyertakan nama komputer lokal, dan metode Environment.GetLogicalDrives untuk menyertakan nama drive logis. Semua perbandingan string ekspresi reguler tidak peka huruf besar/kecil. Agar berhasil menjalankan contoh, Anda harus mengganti string harfiah "MyMachine" dengan nama komputer lokal Anda.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Get drives available on local computer and form into a single character expression.
string[] drives = Environment.GetLogicalDrives();
string driveNames = String.Empty;
foreach (string drive in drives)
driveNames += drive.Substring(0,1);
// Create regular expression pattern dynamically based on local machine information.
string pattern = @"\\\\" + Environment.MachineName + @"(?:\.\w+)*\\([" + driveNames + @"])\$";
string replacement = "$1:";
string[] uncPaths = { @"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt",
@"\\MyMachine\c$\ThingsToDo.txt",
@"\\MyMachine\d$\documents\mydocument.docx" };
foreach (string uncPath in uncPaths)
{
Console.WriteLine("Input string: " + uncPath);
Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement, RegexOptions.IgnoreCase));
Console.WriteLine();
}
}
}
// The example displays the following output if run on a machine whose name is
// MyMachine:
// Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
// Returned string: C:\ThingsToDo.txt
//
// Input string: \\MyMachine\c$\ThingsToDo.txt
// Returned string: c:\ThingsToDo.txt
//
// Input string: \\MyMachine\d$\documents\mydocument.docx
// Returned string: d:\documents\mydocument.docx
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
' Get drives available on local computer and form into a single character expression.
Dim drives() As String = Environment.GetLogicalDrives()
Dim driveNames As String = Nothing
For Each drive As String In drives
driveNames += drive.Substring(0,1)
Next
' Create regular expression pattern dynamically based on local machine information.
Dim pattern As String = "\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"
Dim replacement As String = "$1:"
Dim uncPaths() AS String = {"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", _
"\\MyMachine\c$\ThingsToDo.txt", _
"\\MyMachine\d$\documents\mydocument.docx" }
For Each uncPath As String In uncPaths
Console.WriteLine("Input string: " + uncPath)
Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement, RegexOptions.IgnoreCase))
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output if run on a machine whose name is
' MyMachine:
' Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
' Returned string: C:\ThingsToDo.txt
'
' Input string: \\MyMachine\c$\ThingsToDo.txt
' Returned string: c:\ThingsToDo.txt
'
' Input string: \\MyMachine\d$\documents\mydocument.docx
' Returned string: d:\documents\mydocument.docx
Pola ekspresi reguler ditentukan oleh ekspresi berikut:
"\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"
Tabel berikut ini memperlihatkan bagaimana pola ekspresi reguler ditafsirkan.
Pola | Deskripsi |
---|---|
\\\\ |
Cocokkan dua karakter garis miring terbelakang berturut-turut (\ ). Karena karakter garis miring terbalik ditafsirkan sebagai karakter escape, setiap garis miring terbalik harus diloloskan dengan garis miring terbalik lainnya. |
+ Environment.MachineName + |
Cocokkan string yang dikembalikan oleh properti Environment.MachineName. |
(?:\.\w+)* |
Cocokkan karakter titik (. ) diikuti oleh satu atau beberapa karakter kata. Kecocokan ini dapat terjadi nol atau lebih kali. Subekspresi yang cocok tidak diambil. |
\\ |
Cocokkan karakter garis miring terbelakang (\ ). |
([" + driveNames + "]) |
Cocokkan kelas karakter yang terdiri dari huruf drive individual. Kecocokan ini adalah subekspresi pertama yang ditangkap. |
\$ |
Cocokkan karakter tanda dolar harfiah ($ ). |
Pola penggantian $1
menggantikan seluruh kecocokan dengan subekspresi pertama yang diambil. Artinya, ia menggantikan komputer UNC dan nama drive dengan huruf kandar.
Keterangan
Metode Replace
statis setara dengan membangun objek Regex dengan pola ekspresi reguler yang ditentukan dan memanggil metode instans Replace
.
Parameter pattern
terdiri dari elemen bahasa ekspresi reguler yang secara simbolis menggambarkan string yang cocok. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Ekspresi Reguler .NET dan Bahasa Ekspresi Reguler - Referensi Cepat. Jika Anda menentukan RightToLeft untuk parameter options
, pencarian kecocokan dimulai di akhir string input dan bergerak ke kiri; jika tidak, pencarian dimulai pada awal string input dan bergerak ke kanan.
Parameter replacement
menentukan string yang akan menggantikan setiap kecocokan di input
.
replacement
dapat terdiri dari kombinasi teks harfiah dan substitusi . Misalnya, pola penggantian a*${test}b
menyisipkan string "a*" diikuti dengan substring yang cocok dengan grup penangkapan test
, jika ada, diikuti oleh string "b". Karakter * tidak dikenali sebagai metacharacter dalam pola penggantian.
Nota
Penggantian adalah satu-satunya elemen bahasa ekspresi reguler yang dikenali dalam pola pengganti. Semua elemen bahasa ekspresi reguler lainnya, termasuk karakter lolos, hanya diizinkan dalam pola ekspresi reguler dan tidak dikenali dalam pola penggantian.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan untuk domain aplikasi tempat metode dipanggil. Jika tidak ada waktu habis yang ditentukan dalam properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan.
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Catatan Bagi Pemanggil
Metode ini kehabisan waktu setelah interval yang sama dengan nilai batas waktu default domain aplikasi di mana ia dipanggil. Jika nilai waktu habis belum ditentukan untuk domain aplikasi, nilai InfiniteMatchTimeout, yang mencegah metode kehabisan waktu, digunakan. Metode statis yang direkomendasikan untuk mengganti kecocokan pola adalah Replace(String, String, String, RegexOptions, TimeSpan), yang memungkinkan Anda mengatur interval waktu habis.
Lihat juga
- RegexOptions
- Substitusi dalam Ekspresi Reguler
- Elemen Bahasa Ekspresi Reguler
Berlaku untuk
Replace(String, String, String, RegexOptions, TimeSpan)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string pengganti yang ditentukan. Parameter tambahan menentukan opsi yang memodifikasi operasi pencocokan dan interval waktu habis jika tidak ada kecocokan yang ditemukan.
public:
static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::String ^ replacement, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static string Replace (string input, string pattern, string replacement, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Replace : string * string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> string
Public Shared Function Replace (input As String, pattern As String, replacement As String, options As RegexOptions, matchTimeout As TimeSpan) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- pattern
- String
Pola ekspresi reguler yang cocok.
- replacement
- String
String pengganti.
- options
- RegexOptions
Kombinasi bitwise dari nilai enumerasi yang menyediakan opsi untuk pencocokan.
- matchTimeout
- TimeSpan
Interval waktu habis, atau InfiniteMatchTimeout untuk menunjukkan bahwa metode tidak boleh kehabisan waktu.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pattern
tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
Terjadi kesalahan penguraian ekspresi reguler.
input
, pattern
, atau replacement
null
.
options
bukan kombinasi bitwise yang valid dari nilai RegexOptions.
-atau-
matchTimeout
negatif, nol, atau lebih besar dari sekitar 24 hari.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggunakan metode Replace(String, String, String, RegexOptions, TimeSpan) untuk mengganti nama komputer lokal dan drive di jalur UNC dengan jalur file lokal. Ekspresi reguler menggunakan properti Environment.MachineName untuk menyertakan nama komputer lokal dan metode Environment.GetLogicalDrives untuk menyertakan nama drive logis. Semua perbandingan string ekspresi reguler tidak peka huruf besar/kecil, dan waktu operasi penggantian tunggal habis jika kecocokan tidak dapat ditemukan dalam 0,5 detik. Agar berhasil menjalankan contoh, Anda harus mengganti string harfiah "MyMachine" dengan nama komputer lokal Anda.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Get drives available on local computer and form into a single character expression.
string[] drives = Environment.GetLogicalDrives();
string driveNames = String.Empty;
foreach (string drive in drives)
driveNames += drive.Substring(0,1);
// Create regular expression pattern dynamically based on local machine information.
string pattern = @"\\\\" + Environment.MachineName + @"(?:\.\w+)*\\([" + driveNames + @"])\$";
string replacement = "$1:";
string[] uncPaths = { @"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt",
@"\\MyMachine\c$\ThingsToDo.txt",
@"\\MyMachine\d$\documents\mydocument.docx" };
foreach (string uncPath in uncPaths)
{
Console.WriteLine("Input string: " + uncPath);
string localPath = null;
try {
localPath = Regex.Replace(uncPath, pattern, replacement,
RegexOptions.IgnoreCase,
TimeSpan.FromSeconds(0.5));
Console.WriteLine("Returned string: " + localPath);
}
catch (RegexMatchTimeoutException) {
Console.WriteLine("The replace operation timed out.");
Console.WriteLine("Returned string: " + localPath);
if (uncPath.Equals(localPath))
Console.WriteLine("Equal to original path.");
else
Console.WriteLine("Original string: " + uncPath);
}
Console.WriteLine();
}
}
}
// The example displays the following output if run on a machine whose name is
// MyMachine:
// Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
// Returned string: C:\ThingsToDo.txt
//
// Input string: \\MyMachine\c$\ThingsToDo.txt
// Returned string: c:\ThingsToDo.txt
//
// Input string: \\MyMachine\d$\documents\mydocument.docx
// Returned string: d:\documents\mydocument.docx
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
' Get drives available on local computer and form into a single character expression.
Dim drives() As String = Environment.GetLogicalDrives()
Dim driveNames As String = Nothing
For Each drive As String In drives
driveNames += drive.Substring(0,1)
Next
' Create regular expression pattern dynamically based on local machine information.
Dim pattern As String = "\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"
Dim replacement As String = "$1:"
Dim uncPaths() AS String = {"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", _
"\\MyMachine\c$\ThingsToDo.txt", _
"\\MyMachine\d$\documents\mydocument.docx" }
For Each uncPath As String In uncPaths
Console.WriteLine("Input string: " + uncPath)
Dim localPath As String = Nothing
Try
localPath = Regex.Replace(uncPath, pattern, replacement,
RegexOptions.IgnoreCase,
TimeSpan.FromSeconds(0.5))
Console.WriteLine("Returned string: " + localPath)
Catch e As RegexMatchTimeoutException
Console.WriteLine("The replace operation timed out.")
Console.WriteLine("Returned string: " + localPath)
If uncPath.Equals(localPath) Then
Console.WriteLine("Equal to original path.")
Else
Console.WriteLine("Original string: " + uncPath)
End If
End Try
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output if run on a machine whose name is
' MyMachine:
' Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
' Returned string: C:\ThingsToDo.txt
'
' Input string: \\MyMachine\c$\ThingsToDo.txt
' Returned string: c:\ThingsToDo.txt
'
' Input string: \\MyMachine\d$\documents\mydocument.docx
' Returned string: d:\documents\mydocument.docx
Pola ekspresi reguler ditentukan oleh ekspresi berikut:
"\\\\" + Environment.MachineName + "(?:\.\w+)*\\([" + driveNames + "])\$"
Tabel berikut ini memperlihatkan bagaimana pola ekspresi reguler ditafsirkan.
Pola | Deskripsi |
---|---|
\\\\ |
Cocokkan dua karakter garis miring terbelakang berturut-turut (\ ). Karena karakter garis miring terbalik ditafsirkan sebagai karakter escape, setiap garis miring terbalik harus diloloskan dengan garis miring terbalik lainnya. |
+ Environment.MachineName + |
Cocokkan string yang dikembalikan oleh properti Environment.MachineName. |
(?:\.\w+)* |
Cocokkan karakter titik (. ) diikuti oleh satu atau beberapa karakter kata. Kecocokan ini dapat terjadi nol atau lebih kali. Subekspresi yang cocok tidak diambil. |
\\ |
Cocokkan karakter garis miring terbelakang (\ ). |
([" + driveNames + "]) |
Cocokkan kelas karakter yang terdiri dari huruf drive individual. Kecocokan ini adalah subekspresi pertama yang ditangkap. |
\$ |
Cocokkan karakter tanda dolar harfiah ($ ). |
Pola penggantian $1
menggantikan seluruh kecocokan dengan subekspresi pertama yang diambil. Artinya, ia menggantikan komputer UNC dan nama drive dengan huruf kandar.
Keterangan
Metode Replace
statis setara dengan membangun objek Regex dengan pola ekspresi reguler yang ditentukan dan memanggil metode instans Replace
.
Parameter pattern
terdiri dari elemen bahasa ekspresi reguler yang secara simbolis menggambarkan string yang cocok. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Ekspresi Reguler .NET dan Bahasa Ekspresi Reguler - Referensi Cepat. Jika Anda menentukan RightToLeft untuk parameter options
, pencarian kecocokan dimulai di akhir string input dan bergerak ke kiri; jika tidak, pencarian dimulai pada awal string input dan bergerak ke kanan.
Parameter replacement
menentukan string yang akan menggantikan setiap kecocokan di input
.
replacement
dapat terdiri dari kombinasi teks harfiah dan substitusi . Misalnya, pola penggantian a*${test}b
menyisipkan string "a*" diikuti dengan substring yang cocok dengan grup penangkapan test
, jika ada, diikuti oleh string "b". Karakter * tidak dikenali sebagai metacharacter dalam pola penggantian.
Nota
Penggantian adalah satu-satunya elemen bahasa ekspresi reguler yang dikenali dalam pola pengganti. Semua elemen bahasa ekspresi reguler lainnya, termasuk karakter lolos, hanya diizinkan dalam pola ekspresi reguler dan tidak dikenali dalam pola penggantian.
Parameter matchTimeout
menentukan berapa lama metode pencocokan pola harus mencoba menemukan kecocokan sebelum waktu habis. Mengatur interval waktu habis mencegah ekspresi reguler yang mengandalkan backtracking yang berlebihan muncul untuk berhenti merespons saat mereka memproses input yang berisi kecocokan dekat. Untuk informasi selengkapnya, lihat Praktik Terbaik untuk Ekspresi Reguler dan Backtracking. Jika tidak ada kecocokan yang ditemukan dalam interval waktu tersebut, metode akan memberikan pengecualian RegexMatchTimeoutException.
matchTimeout
mengambil alih nilai batas waktu default yang ditentukan untuk domain aplikasi tempat metode dijalankan.
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Catatan Bagi Pemanggil
Kami menyarankan agar Anda mengatur parameter matchTimeout
ke nilai yang sesuai, seperti dua detik. Jika Anda menonaktifkan waktu habis dengan menentukan InfiniteMatchTimeout, mesin ekspresi reguler menawarkan performa yang sedikit lebih baik. Namun, Anda harus menonaktifkan batas waktu hanya dalam kondisi berikut:
Ketika input yang diproses oleh ekspresi reguler berasal dari sumber yang diketahui dan tepercaya atau terdiri dari teks statis. Ini mengecualikan teks yang telah dimasukkan secara dinamis oleh pengguna.
Ketika pola ekspresi reguler telah diuji secara menyeluruh untuk memastikan bahwa pola regex secara efisien menangani kecocokan, non-kecocokan, dan mendekati kecocokan.
Ketika pola ekspresi reguler tidak berisi elemen bahasa yang diketahui menyebabkan backtracking yang berlebihan saat memproses kecocokan dekat.
Lihat juga
- RegexOptions
- Substitusi dalam Ekspresi Reguler
- Elemen Bahasa Ekspresi Reguler
- Backtracking dalam ekspresi reguler
- Praktik terbaik untuk ekspresi reguler di .NET
Berlaku untuk
Replace(String, MatchEvaluator, Int32, Int32)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam substring input tertentu, mengganti jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string yang dikembalikan oleh delegasi MatchEvaluator.
public:
System::String ^ Replace(System::String ^ input, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, int count, int startat);
public string Replace (string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count, int startat);
member this.Replace : string * System.Text.RegularExpressions.MatchEvaluator * int * int -> string
Public Function Replace (input As String, evaluator As MatchEvaluator, count As Integer, startat As Integer) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- evaluator
- MatchEvaluator
Metode kustom yang memeriksa setiap kecocokan dan mengembalikan string asli yang cocok atau string pengganti.
- count
- Int32
Jumlah maksimum kali penggantian akan terjadi.
- startat
- Int32
Posisi karakter dalam string input tempat pencarian dimulai.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pola ekspresi reguler tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
input
atau evaluator
null
.
startat
kurang dari nol atau lebih besar dari panjang input
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Keterangan
Metode Regex.Replace(String, MatchEvaluator, Int32, Int32) berguna untuk mengganti kecocokan ekspresi reguler jika salah satu kondisi berikut ini benar:
- String pengganti tidak dapat dengan mudah ditentukan oleh pola penggantian ekspresi reguler.
- String penggantian dihasilkan dari beberapa pemrosesan yang dilakukan pada string yang cocok.
- String penggantian dihasilkan dari pemrosesan bersyarkat.
Metode ini setara dengan memanggil metode Regex.Matches(String, Int32) dan meneruskan objek count
Match pertama dalam koleksi MatchCollection yang dikembalikan ke delegasi evaluator
.
Untuk detail selengkapnya tentang startat
, lihat bagian Keterangan dari Match(String, Int32).
Ekspresi reguler adalah pola yang ditentukan oleh konstruktor untuk objek Regex saat ini.
Parameter evaluator
adalah delegasi untuk metode kustom yang Anda tentukan dan yang memeriksa setiap kecocokan. Metode kustom harus memiliki tanda tangan berikut agar sesuai dengan delegasi MatchEvaluator.
public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String
Metode kustom Anda mengembalikan string yang menggantikan input yang cocok.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan oleh konstruktor Regex.Regex(String, RegexOptions, TimeSpan). Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat objek Regex dibuat. Jika tidak ada waktu habis yang ditentukan dalam panggilan konstruktor Regex atau di properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- MatchEvaluator
- Substitusi dalam Ekspresi Reguler
- Bahasa Ekspresi Reguler - Referensi Cepat
Berlaku untuk
Replace(String, String, MatchEvaluator, RegexOptions)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator. Opsi yang ditentukan mengubah operasi pencocokan.
public:
static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, System::Text::RegularExpressions::RegexOptions options);
public static string Replace (string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options);
static member Replace : string * string * System.Text.RegularExpressions.MatchEvaluator * System.Text.RegularExpressions.RegexOptions -> string
Public Shared Function Replace (input As String, pattern As String, evaluator As MatchEvaluator, options As RegexOptions) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- pattern
- String
Pola ekspresi reguler yang cocok.
- evaluator
- MatchEvaluator
Metode kustom yang memeriksa setiap kecocokan dan mengembalikan string asli yang cocok atau string pengganti.
- options
- RegexOptions
Kombinasi bitwise dari nilai enumerasi yang menyediakan opsi untuk pencocokan.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pattern
tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
Terjadi kesalahan penguraian ekspresi reguler.
input
, pattern
, atau evaluator
null
.
options
bukan kombinasi bitwise yang valid dari nilai RegexOptions.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggunakan ekspresi reguler untuk mengekstrak kata individual dari string, lalu menggunakan delegasi MatchEvaluator untuk memanggil metode bernama WordScramble
yang mengacak huruf individual dalam kata. Untuk melakukan ini, metode WordScramble
membuat array yang berisi karakter dalam kecocokan. Ini juga membuat array paralel yang diisi dengan angka floating-point acak. Array diurutkan dengan memanggil metode Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>), dan array yang diurutkan disediakan sebagai argumen ke konstruktor kelas String. String yang baru dibuat ini kemudian dikembalikan oleh metode WordScramble
. Pola ekspresi reguler \w+
cocok dengan satu atau beberapa karakter kata; mesin ekspresi reguler akan terus menambahkan karakter ke kecocokan hingga menemukan karakter non-kata, seperti karakter spasi putih. Panggilan ke metode Replace(String, String, MatchEvaluator, RegexOptions) menyertakan opsi RegexOptions.IgnorePatternWhitespace sehingga komentar dalam pola ekspresi reguler \w+ # Matches all the characters in a word.
diabaikan oleh mesin ekspresi reguler.
using System;
using System.Collections;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string words = "letter alphabetical missing lack release " +
"penchant slack acryllic laundry cease";
string pattern = @"\w+ # Matches all the characters in a word.";
MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
Console.WriteLine("Original words:");
Console.WriteLine(words);
Console.WriteLine();
Console.WriteLine("Scrambled words:");
Console.WriteLine(Regex.Replace(words, pattern, evaluator,
RegexOptions.IgnorePatternWhitespace));
}
public static string WordScrambler(Match match)
{
int arraySize = match.Value.Length;
// Define two arrays equal to the number of letters in the match.
double[] keys = new double[arraySize];
char[] letters = new char[arraySize];
// Instantiate random number generator'
Random rnd = new Random();
for (int ctr = 0; ctr < match.Value.Length; ctr++)
{
// Populate the array of keys with random numbers.
keys[ctr] = rnd.NextDouble();
// Assign letter to array of letters.
letters[ctr] = match.Value[ctr];
}
Array.Sort(keys, letters, 0, arraySize, Comparer.Default);
return new String(letters);
}
}
// The example displays output similar to the following:
// Original words:
// letter alphabetical missing lack release penchant slack acryllic laundry cease
//
// Scrambled words:
// etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae
Imports System.Collections
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim words As String = "letter alphabetical missing lack release " + _
"penchant slack acryllic laundry cease"
Dim pattern As String = "\w+ # Matches all the characters in a word."
Dim evaluator As MatchEvaluator = AddressOf WordScrambler
Console.WriteLine("Original words:")
Console.WriteLine(words)
Console.WriteLine("Scrambled words:")
Console.WriteLine(Regex.Replace(words, pattern, evaluator,
RegexOptions.IgnorePatternWhitespace))
End Sub
Public Function WordScrambler(match As Match) As String
Dim arraySize As Integer = match.Value.Length - 1
' Define two arrays equal to the number of letters in the match.
Dim keys(arraySize) As Double
Dim letters(arraySize) As Char
' Instantiate random number generator'
Dim rnd As New Random()
For ctr As Integer = 0 To match.Value.Length - 1
' Populate the array of keys with random numbers.
keys(ctr) = rnd.NextDouble()
' Assign letter to array of letters.
letters(ctr) = match.Value.Chars(ctr)
Next
Array.Sort(keys, letters, 0, arraySize, Comparer.Default)
Return New String(letters)
End Function
End Module
' The example displays output similar to the following:
' Original words:
' letter alphabetical missing lack release penchant slack acryllic laundry cease
'
' Scrambled words:
' etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae
Keterangan
Metode Regex.Replace(String, String, MatchEvaluator, RegexOptions) berguna untuk mengganti kecocokan ekspresi reguler jika salah satu kondisi berikut ini benar:
String pengganti tidak dapat dengan mudah ditentukan oleh pola penggantian ekspresi reguler.
String penggantian dihasilkan dari beberapa pemrosesan yang dilakukan pada string yang cocok.
String penggantian dihasilkan dari pemrosesan bersyarkat.
Metode ini setara dengan memanggil metode Regex.Matches(String, String, RegexOptions) dan meneruskan setiap objek Match dalam koleksi MatchCollection yang dikembalikan ke delegasi evaluator
.
Parameter pattern
terdiri dari elemen bahasa ekspresi reguler yang secara simbolis menggambarkan string yang cocok. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Ekspresi Reguler .NET dan Bahasa Ekspresi Reguler - Referensi Cepat.
Parameter evaluator
adalah delegasi untuk metode kustom yang Anda tentukan dan yang memeriksa setiap kecocokan. Metode kustom harus memiliki tanda tangan berikut agar sesuai dengan delegasi MatchEvaluator.
public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String
Metode kustom Anda mengembalikan string yang menggantikan input yang cocok.
Jika Anda menentukan RightToLeft untuk parameter options
, pencarian kecocokan dimulai di akhir string input dan bergerak ke kiri; jika tidak, pencarian dimulai pada awal string input dan bergerak ke kanan.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan untuk domain aplikasi tempat metode dipanggil. Jika tidak ada waktu habis yang ditentukan dalam properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan.
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- MatchEvaluator
- RegexOptions
- Substitusi dalam Ekspresi Reguler
- Elemen Bahasa Ekspresi Reguler
Berlaku untuk
Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua substring yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator. Parameter tambahan menentukan opsi yang memodifikasi operasi pencocokan dan interval waktu habis jika tidak ada kecocokan yang ditemukan.
public:
static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static string Replace (string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Replace : string * string * System.Text.RegularExpressions.MatchEvaluator * System.Text.RegularExpressions.RegexOptions * TimeSpan -> string
Public Shared Function Replace (input As String, pattern As String, evaluator As MatchEvaluator, options As RegexOptions, matchTimeout As TimeSpan) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- pattern
- String
Pola ekspresi reguler yang cocok.
- evaluator
- MatchEvaluator
Metode kustom yang memeriksa setiap kecocokan dan mengembalikan string asli yang cocok atau string pengganti.
- options
- RegexOptions
Kombinasi bitwise dari nilai enumerasi yang menyediakan opsi untuk pencocokan.
- matchTimeout
- TimeSpan
Interval waktu habis, atau InfiniteMatchTimeout untuk menunjukkan bahwa metode tidak boleh kehabisan waktu.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pattern
tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
Terjadi kesalahan penguraian ekspresi reguler.
input
, pattern
, atau evaluator
null
.
options
bukan kombinasi bitwise yang valid dari nilai RegexOptions.
-atau-
matchTimeout
negatif, nol, atau lebih besar dari sekitar 24 hari.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggunakan ekspresi reguler untuk mengekstrak kata individual dari string, lalu menggunakan delegasi MatchEvaluator untuk memanggil metode bernama WordScramble
yang mengacak huruf individual dalam kata. Untuk melakukan ini, metode WordScramble
membuat array yang berisi karakter dalam kecocokan. Ini juga membuat array paralel yang diisi dengan angka floating-point acak. Array diurutkan dengan memanggil metode Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>), dan array yang diurutkan disediakan sebagai argumen ke konstruktor kelas String. String yang baru dibuat ini kemudian dikembalikan oleh metode WordScramble
. Pola ekspresi reguler \w+
cocok dengan satu atau beberapa karakter kata; mesin ekspresi reguler akan terus menambahkan karakter ke kecocokan hingga menemukan karakter non-kata, seperti karakter spasi putih. Panggilan ke metode Replace(String, String, MatchEvaluator, RegexOptions) menyertakan opsi RegexOptions.IgnorePatternWhitespace sehingga komentar dalam pola ekspresi reguler \w+ # Matches all the characters in a word.
diabaikan oleh mesin ekspresi reguler.
using System;
using System.Collections;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string words = "letter alphabetical missing lack release " +
"penchant slack acryllic laundry cease";
string pattern = @"\w+ # Matches all the characters in a word.";
MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
Console.WriteLine("Original words:");
Console.WriteLine(words);
Console.WriteLine();
try {
Console.WriteLine("Scrambled words:");
Console.WriteLine(Regex.Replace(words, pattern, evaluator,
RegexOptions.IgnorePatternWhitespace,
TimeSpan.FromSeconds(.25)));
}
catch (RegexMatchTimeoutException) {
Console.WriteLine("Word Scramble operation timed out.");
Console.WriteLine("Returned words:");
}
}
public static string WordScrambler(Match match)
{
int arraySize = match.Value.Length;
// Define two arrays equal to the number of letters in the match.
double[] keys = new double[arraySize];
char[] letters = new char[arraySize];
// Instantiate random number generator'
Random rnd = new Random();
for (int ctr = 0; ctr < match.Value.Length; ctr++)
{
// Populate the array of keys with random numbers.
keys[ctr] = rnd.NextDouble();
// Assign letter to array of letters.
letters[ctr] = match.Value[ctr];
}
Array.Sort(keys, letters, 0, arraySize, Comparer.Default);
return new String(letters);
}
}
// The example displays output similar to the following:
// Original words:
// letter alphabetical missing lack release penchant slack acryllic laundry cease
//
// Scrambled words:
// etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae
Imports System.Collections
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim words As String = "letter alphabetical missing lack release " + _
"penchant slack acryllic laundry cease"
Dim pattern As String = "\w+ # Matches all the characters in a word."
Dim evaluator As MatchEvaluator = AddressOf WordScrambler
Console.WriteLine("Original words:")
Console.WriteLine(words)
Try
Console.WriteLine("Scrambled words:")
Console.WriteLine(Regex.Replace(words, pattern, evaluator,
RegexOptions.IgnorePatternWhitespace,
TimeSpan.FromSeconds(.25)))
Catch e As RegexMatchTimeoutException
Console.WriteLine("Word Scramble operation timed out.")
Console.WriteLine("Returned words:")
End Try
End Sub
Public Function WordScrambler(match As Match) As String
Dim arraySize As Integer = match.Value.Length - 1
' Define two arrays equal to the number of letters in the match.
Dim keys(arraySize) As Double
Dim letters(arraySize) As Char
' Instantiate random number generator'
Dim rnd As New Random()
For ctr As Integer = 0 To match.Value.Length - 1
' Populate the array of keys with random numbers.
keys(ctr) = rnd.NextDouble()
' Assign letter to array of letters.
letters(ctr) = match.Value.Chars(ctr)
Next
Array.Sort(keys, letters, 0, arraySize, Comparer.Default)
Return New String(letters)
End Function
End Module
' The example displays output similar to the following:
' Original words:
' letter alphabetical missing lack release penchant slack acryllic laundry cease
'
' Scrambled words:
' etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae
Keterangan
Metode Regex.Replace(String, String, MatchEvaluator, RegexOptions) berguna untuk mengganti kecocokan ekspresi reguler jika salah satu kondisi berikut ini benar:
Jika string pengganti tidak dapat dengan mudah ditentukan oleh pola penggantian ekspresi reguler.
Jika string pengganti dihasilkan dari beberapa pemrosesan yang dilakukan pada string yang cocok.
Jika string pengganti dihasilkan dari pemrosesan bersyarah.
Metode ini setara dengan memanggil metode Regex.Matches(String, String, RegexOptions) dan meneruskan setiap objek Match dalam koleksi MatchCollection yang dikembalikan ke delegasi evaluator
.
Parameter pattern
terdiri dari elemen bahasa ekspresi reguler yang secara simbolis menggambarkan string yang cocok. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Ekspresi Reguler .NET dan Bahasa Ekspresi Reguler - Referensi Cepat.
Parameter evaluator
adalah delegasi untuk metode kustom yang Anda tentukan dan yang memeriksa setiap kecocokan. Metode kustom harus memiliki tanda tangan berikut agar sesuai dengan delegasi MatchEvaluator.
public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String
Metode kustom Anda mengembalikan string yang menggantikan input yang cocok.
Jika Anda menentukan RightToLeft untuk parameter options
, pencarian kecocokan dimulai di akhir string input dan bergerak ke kiri; jika tidak, pencarian dimulai pada awal string input dan bergerak ke kanan.
Parameter matchTimeout
menentukan berapa lama metode pencocokan pola harus mencoba menemukan kecocokan sebelum waktu habis. Mengatur interval waktu habis mencegah ekspresi reguler yang mengandalkan backtracking yang berlebihan muncul ke "berhenti merespons saat mereka memproses input yang berisi kecocokan dekat. Untuk informasi selengkapnya, lihat Praktik Terbaik untuk Ekspresi Reguler dan Backtracking. Jika tidak ada kecocokan yang ditemukan dalam interval waktu tersebut, metode akan memberikan pengecualian RegexMatchTimeoutException.
matchTimeout
mengambil alih nilai batas waktu default yang ditentukan untuk domain aplikasi tempat metode dijalankan.
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Catatan Bagi Pemanggil
Kami menyarankan agar Anda mengatur parameter matchTimeout
ke nilai yang sesuai, seperti dua detik. Jika Anda menonaktifkan waktu habis dengan menentukan InfiniteMatchTimeout, mesin ekspresi reguler menawarkan performa yang sedikit lebih baik. Namun, Anda harus menonaktifkan batas waktu hanya dalam kondisi berikut:
Ketika input yang diproses oleh ekspresi reguler berasal dari sumber yang diketahui dan tepercaya atau terdiri dari teks statis. Ini mengecualikan teks yang telah dimasukkan secara dinamis oleh pengguna.
Ketika pola ekspresi reguler telah diuji secara menyeluruh untuk memastikan bahwa pola regex secara efisien menangani kecocokan, non-kecocokan, dan mendekati kecocokan.
Ketika pola ekspresi reguler tidak berisi elemen bahasa yang diketahui menyebabkan backtracking yang berlebihan saat memproses kecocokan dekat.
Lihat juga
- RegexOptions
- Substitusi dalam Ekspresi Reguler
- Elemen Bahasa Ekspresi Reguler
- Backtracking dalam ekspresi reguler
- Praktik terbaik untuk ekspresi reguler di .NET
Berlaku untuk
Replace(String, String, Int32, Int32)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam substring input tertentu, menggantikan jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan.
public:
System::String ^ Replace(System::String ^ input, System::String ^ replacement, int count, int startat);
public string Replace (string input, string replacement, int count, int startat);
member this.Replace : string * string * int * int -> string
Public Function Replace (input As String, replacement As String, count As Integer, startat As Integer) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- replacement
- String
String pengganti.
- count
- Int32
Berapa kali penggantian dapat terjadi.
- startat
- Int32
Posisi karakter dalam string input tempat pencarian dimulai.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pola ekspresi reguler tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
input
atau replacement
null
.
startat
kurang dari nol atau lebih besar dari panjang input
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut meng-spasi ganda semua kecuali baris pertama string. Ini mendefinisikan pola ekspresi reguler, ^.*$
, yang cocok dengan baris teks, memanggil metode Match(String) untuk mencocokkan baris pertama string, dan menggunakan properti Match.Index
dan Match.Count
untuk menentukan posisi awal baris kedua.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "Instantiating a New Type\n" +
"Generally, there are two ways that an\n" +
"instance of a class or structure can\n" +
"be instantiated. ";
string pattern = "^.*$";
string replacement = "\n$&";
Regex rgx = new Regex(pattern, RegexOptions.Multiline);
string result = String.Empty;
Match match = rgx.Match(input);
// Double space all but the first line.
if (match.Success)
result = rgx.Replace(input, replacement, -1, match.Index + match.Length + 1);
Console.WriteLine(result);
}
}
// The example displays the following output:
// Instantiating a New Type
//
// Generally, there are two ways that an
//
// instance of a class or structure can
//
// be instntiated.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "Instantiating a New Type" + vbCrLf + _
"Generally, there are two ways that an" + vbCrLf + _
"instance of a class or structure can" + vbCrLf + _
"be instantiated. "
Dim pattern As String = "^.*$"
Dim replacement As String = vbCrLf + "$&"
Dim rgx As New Regex(pattern, RegexOptions.Multiline)
Dim result As String = String.Empty
Dim match As Match = rgx.Match(input)
' Double space all but the first line.
If match.Success Then
result = rgx.Replace(input, replacement, -1, match.Index + match.Length + 1)
End If
Console.WriteLine(result)
End Sub
End Module
' The example displays the following output:
' Instantiating a New Type
'
' Generally, there are two ways that an
'
' instance of a class or structure can
'
' be instntiated.
Pola ekspresi reguler ^.*$
didefinisikan seperti yang diperlihatkan dalam tabel berikut.
Pola | Deskripsi |
---|---|
^ |
Cocokkan awal baris. (Perhatikan bahwa objek Regex dibuat dengan menggunakan opsi RegexOptions.Multiline; jika tidak, kelas karakter ini hanya akan cocok dengan awal string input.) |
.* |
Cocokkan karakter apa pun nol atau lebih kali. |
$ |
Cocokkan akhir baris. (Perhatikan bahwa objek Regex dibuat dengan menggunakan opsi RegexOptions.Multiline; jika tidak, kelas karakter ini hanya akan cocok dengan awal string input.) |
String pengganti (vbCrLf + "$&"
di Visual Basic, "\n$&"
di C#) menambahkan baris baru sebelum string yang cocok. Perhatikan bahwa \n
dalam contoh C# ditafsirkan sebagai karakter baris baru oleh pengkompilasi C#; ini tidak mewakili escape karakter ekspresi reguler.
Keterangan
Pencarian kecocokan dimulai dalam string input
pada posisi yang ditentukan oleh parameter startat
. Ekspresi reguler adalah pola yang ditentukan oleh konstruktor untuk objek Regex saat ini. Jika count
negatif, penggantian berlanjut ke akhir string. Jika count
melebihi jumlah kecocokan, semua kecocokan akan diganti.
Untuk detail selengkapnya tentang startat
, lihat bagian Keterangan dari Match(String, Int32).
Parameter replacement
menentukan string yang akan menggantikan setiap kecocokan di input
.
replacement
dapat terdiri dari kombinasi teks harfiah dan substitusi . Misalnya, pola penggantian a*${test}b
menyisipkan string "a*" diikuti dengan substring yang cocok dengan grup penangkapan test
, jika ada, diikuti oleh string "b". Karakter * tidak dikenali sebagai metacharacter dalam pola penggantian.
Nota
Penggantian adalah satu-satunya elemen bahasa ekspresi reguler yang dikenali dalam pola pengganti. Semua elemen bahasa ekspresi reguler lainnya, termasuk karakter lolos, hanya diizinkan dalam pola ekspresi reguler dan tidak dikenali dalam pola penggantian.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan oleh konstruktor Regex.Regex(String, RegexOptions, TimeSpan). Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat objek Regex dibuat. Jika tidak ada waktu habis yang ditentukan dalam panggilan konstruktor Regex atau di properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- Substitusi dalam Ekspresi Reguler
- Bahasa Ekspresi Reguler - Referensi Cepat
Berlaku untuk
Replace(String, String, String)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string pengganti yang ditentukan.
public:
static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::String ^ replacement);
public static string Replace (string input, string pattern, string replacement);
static member Replace : string * string * string -> string
Public Shared Function Replace (input As String, pattern As String, replacement As String) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- pattern
- String
Pola ekspresi reguler yang cocok.
- replacement
- String
String pengganti.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pattern
tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
Terjadi kesalahan penguraian ekspresi reguler.
input
, pattern
, atau replacement
null
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut mendefinisikan ekspresi reguler, \s+
, yang cocok dengan satu atau beberapa karakter spasi putih. String pengganti, " ", menggantinya dengan karakter spasi tunggal.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "This is text with far too much " +
"white space.";
string pattern = "\\s+";
string replacement = " ";
string result = Regex.Replace(input, pattern, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
}
}
// The example displays the following output:
// Original String: This is text with far too much white space.
// Replacement String: This is text with far too much white space.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "This is text with far too much " + _
"white space."
Dim pattern As String = "\s+"
Dim replacement As String = " "
Dim result As String = Regex.Replace(input, pattern, replacement)
Console.WriteLine("Original String: {0}", input)
Console.WriteLine("Replacement String: {0}", result)
End Sub
End Module
' The example displays the following output:
' Original String: This is text with far too much white space.
' Replacement String: This is text with far too much white space.
Contoh berikut menggunakan metode Replace(String, String, String) untuk mengganti nama komputer lokal dan drive di jalur UNC dengan jalur file lokal. Ekspresi reguler menggunakan properti Environment.MachineName untuk menyertakan nama komputer lokal, dan metode Environment.GetLogicalDrives untuk menyertakan nama drive logis. Agar berhasil menjalankan contoh, Anda harus mengganti string harfiah "MyMachine" dengan nama komputer lokal Anda.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Get drives available on local computer and form into a single character expression.
string[] drives = Environment.GetLogicalDrives();
string driveNames = String.Empty;
foreach (string drive in drives)
driveNames += drive.Substring(0,1);
// Create regular expression pattern dynamically based on local machine information.
string pattern = @"\\\\(?i:" + Environment.MachineName + @")(?:\.\w+)*\\((?i:[" + driveNames + @"]))\$";
string replacement = "$1:";
string[] uncPaths = { @"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt",
@"\\MyMachine\c$\ThingsToDo.txt",
@"\\MyMachine\d$\documents\mydocument.docx" };
foreach (string uncPath in uncPaths)
{
Console.WriteLine("Input string: " + uncPath);
Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement));
Console.WriteLine();
}
}
}
// The example displays the following output if run on a machine whose name is
// MyMachine:
// Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
// Returned string: C:\ThingsToDo.txt
//
// Input string: \\MyMachine\c$\ThingsToDo.txt
// Returned string: c:\ThingsToDo.txt
//
// Input string: \\MyMachine\d$\documents\mydocument.docx
// Returned string: d:\documents\mydocument.docx
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
' Get drives available on local computer and form into a single character expression.
Dim drives() As String = Environment.GetLogicalDrives()
Dim driveNames As String = Nothing
For Each drive As String In drives
driveNames += drive.Substring(0,1)
Next
' Create regular expression pattern dynamically based on local machine information.
Dim pattern As String = "\\\\(?i:" + Environment.MachineName + ")(?:\.\w+)*\\((?i:[" + driveNames + "]))\$"
Dim replacement As String = "$1:"
Dim uncPaths() AS String = {"\\MyMachine.domain1.mycompany.com\C$\ThingsToDo.txt", _
"\\MyMachine\c$\ThingsToDo.txt", _
"\\MyMachine\d$\documents\mydocument.docx" }
For Each uncPath As String In uncPaths
Console.WriteLine("Input string: " + uncPath)
Console.WriteLine("Returned string: " + Regex.Replace(uncPath, pattern, replacement))
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output if run on a machine whose name is
' MyMachine:
' Input string: \\MyMachine.domain1.mycompany.com\C$\ThingsToTo.txt
' Returned string: C:\ThingsToDo.txt
'
' Input string: \\MyMachine\c$\ThingsToDo.txt
' Returned string: c:\ThingsToDo.txt
'
' Input string: \\MyMachine\d$\documents\mydocument.docx
' Returned string: d:\documents\mydocument.docx
Pola ekspresi reguler ditentukan oleh ekspresi berikut:
"\\\\(?i:" + Environment.MachineName + ")(?:\.\w+)*\\((?i:[" + driveNames + "]))\$"
Tabel berikut ini memperlihatkan bagaimana pola ekspresi reguler ditafsirkan.
Pola | Deskripsi |
---|---|
\\\\ |
Cocokkan dua karakter garis miring terbelakang berturut-turut (\ ). Karena karakter garis miring terbalik ditafsirkan sebagai karakter escape, setiap garis miring terbalik harus diloloskan dengan garis miring terbalik lainnya. |
(?i:" + Environment.MachineName + ") |
Lakukan kecocokan tidak sensitif huruf besar/kecil dari string yang dikembalikan oleh properti Environment.MachineName. |
(?:\.\w+)* |
Cocokkan karakter titik (. ) diikuti oleh satu atau beberapa karakter kata. Kecocokan ini dapat terjadi nol atau lebih kali. Subekspresi yang cocok tidak diambil. |
\\ |
Cocokkan karakter garis miring terbelakang (\ ). |
((?i:[" + driveNames + "])) |
Lakukan kecocokan yang tidak peka huruf besar/kecil dari kelas karakter yang terdiri dari huruf drive individual. Kecocokan ini adalah subekspresi pertama yang ditangkap. |
\$ |
Cocokkan karakter tanda dolar harfiah ($ ). |
Pola penggantian $1
menggantikan seluruh kecocokan dengan subekspresi pertama yang diambil. Artinya, ia menggantikan komputer UNC dan nama drive dengan huruf kandar.
Keterangan
Metode Replace
statis setara dengan membangun objek Regex dengan pola ekspresi reguler yang ditentukan dan memanggil metode instans Replace
.
Parameter pattern
terdiri dari elemen bahasa ekspresi reguler yang secara simbolis menggambarkan string yang cocok. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Ekspresi Reguler .NET dan Bahasa Ekspresi Reguler - Referensi Cepat. Pencarian kecocokan dimulai di awal string input
.
Parameter replacement
menentukan string yang akan menggantikan setiap kecocokan di input
.
replacement
dapat terdiri dari kombinasi teks harfiah dan substitusi . Misalnya, pola penggantian a*${test}b
menyisipkan string "a*" diikuti dengan substring yang cocok dengan grup penangkapan test
, jika ada, diikuti oleh string "b". Karakter * tidak dikenali sebagai metacharacter dalam pola penggantian.
Nota
Penggantian adalah satu-satunya elemen bahasa ekspresi reguler yang dikenali dalam pola pengganti. Semua elemen bahasa ekspresi reguler lainnya, termasuk karakter lolos, hanya diizinkan dalam pola ekspresi reguler dan tidak dikenali dalam pola penggantian.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan untuk domain aplikasi tempat metode dipanggil. Jika tidak ada waktu habis yang ditentukan dalam properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan.
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Catatan Bagi Pemanggil
Metode ini kehabisan waktu setelah interval yang sama dengan nilai batas waktu default domain aplikasi di mana ia dipanggil. Jika nilai waktu habis belum ditentukan untuk domain aplikasi, nilai InfiniteMatchTimeout, yang mencegah metode kehabisan waktu, digunakan. Metode statis yang direkomendasikan untuk mengganti kecocokan pola adalah Replace(String, String, String, RegexOptions, TimeSpan), yang memungkinkan Anda mengatur interval waktu habis.
Lihat juga
- Substitusi dalam Ekspresi Reguler
- Elemen Bahasa Ekspresi Reguler
Berlaku untuk
Replace(String, String, MatchEvaluator)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator.
public:
static System::String ^ Replace(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::MatchEvaluator ^ evaluator);
public static string Replace (string input, string pattern, System.Text.RegularExpressions.MatchEvaluator evaluator);
static member Replace : string * string * System.Text.RegularExpressions.MatchEvaluator -> string
Public Shared Function Replace (input As String, pattern As String, evaluator As MatchEvaluator) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- pattern
- String
Pola ekspresi reguler yang cocok.
- evaluator
- MatchEvaluator
Metode kustom yang memeriksa setiap kecocokan dan mengembalikan string asli yang cocok atau string pengganti.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pattern
tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
Terjadi kesalahan penguraian ekspresi reguler.
input
, pattern
, atau evaluator
null
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggunakan ekspresi reguler untuk mengekstrak kata individual dari string, lalu menggunakan delegasi MatchEvaluator untuk memanggil metode bernama WordScramble
yang mengacak huruf individual dalam kata. Untuk melakukan ini, metode WordScramble
membuat array yang berisi karakter dalam kecocokan. Ini juga membuat array paralel yang diisi dengan angka floating-point acak. Array diurutkan dengan memanggil metode Array.Sort<TKey,TValue>(TKey[], TValue[], IComparer<TKey>), dan array yang diurutkan disediakan sebagai argumen ke konstruktor kelas String. String yang baru dibuat ini kemudian dikembalikan oleh metode WordScramble
. Pola ekspresi reguler \w+
cocok dengan satu atau beberapa karakter kata; mesin ekspresi reguler akan terus menambahkan karakter ke kecocokan hingga menemukan karakter non-kata, seperti karakter spasi putih.
using System;
using System.Collections;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string words = "letter alphabetical missing lack release " +
"penchant slack acryllic laundry cease";
string pattern = @"\w+";
MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
Console.WriteLine("Original words:");
Console.WriteLine(words);
Console.WriteLine();
Console.WriteLine("Scrambled words:");
Console.WriteLine(Regex.Replace(words, pattern, evaluator));
}
public static string WordScrambler(Match match)
{
int arraySize = match.Value.Length;
// Define two arrays equal to the number of letters in the match.
double[] keys = new double[arraySize];
char[] letters = new char[arraySize];
// Instantiate random number generator'
Random rnd = new Random();
for (int ctr = 0; ctr < match.Value.Length; ctr++)
{
// Populate the array of keys with random numbers.
keys[ctr] = rnd.NextDouble();
// Assign letter to array of letters.
letters[ctr] = match.Value[ctr];
}
Array.Sort(keys, letters, 0, arraySize, Comparer.Default);
return new String(letters);
}
}
// The example displays output similar to the following:
// Original words:
// letter alphabetical missing lack release penchant slack acryllic laundry cease
//
// Scrambled words:
// elrtte iaeabatlpchl igmnssi lcka aerslee hnpatnce ksacl lialcryc dylruna ecase
Imports System.Collections
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim words As String = "letter alphabetical missing lack release " + _
"penchant slack acryllic laundry cease"
Dim pattern As String = "\w+"
Dim evaluator As MatchEvaluator = AddressOf WordScrambler
Console.WriteLine("Original words:")
Console.WriteLine(words)
Console.WriteLine("Scrambled words:")
Console.WriteLine(Regex.Replace(words, pattern, evaluator))
End Sub
Public Function WordScrambler(match As Match) As String
Dim arraySize As Integer = match.Value.Length - 1
' Define two arrays equal to the number of letters in the match.
Dim keys(arraySize) As Double
Dim letters(arraySize) As Char
' Instantiate random number generator'
Dim rnd As New Random()
For ctr As Integer = 0 To match.Value.Length - 1
' Populate the array of keys with random numbers.
keys(ctr) = rnd.NextDouble()
' Assign letter to array of letters.
letters(ctr) = match.Value.Chars(ctr)
Next
Array.Sort(keys, letters, 0, arraySize, Comparer.Default)
Return New String(letters)
End Function
End Module
' The example displays output similar to the following:
' Original words:
' letter alphabetical missing lack release penchant slack acryllic laundry cease
'
' Scrambled words:
' elrtte iaeabatlpchl igmnssi lcka aerslee hnpatnce ksacl lialcryc dylruna ecase
Keterangan
Metode Regex.Replace(String, String, MatchEvaluator) berguna untuk mengganti kecocokan ekspresi reguler jika salah satu kondisi berikut ini benar:
String pengganti tidak dapat dengan mudah ditentukan oleh pola penggantian ekspresi reguler.
String penggantian dihasilkan dari beberapa pemrosesan yang dilakukan pada string yang cocok.
String penggantian dihasilkan dari pemrosesan bersyarkat.
Metode ini setara dengan memanggil metode Regex.Matches(String, String) dan meneruskan setiap objek Match dalam koleksi MatchCollection yang dikembalikan ke delegasi evaluator
.
Parameter pattern
terdiri dari elemen bahasa ekspresi reguler yang secara simbolis menggambarkan string yang cocok. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Ekspresi Reguler .NET dan Bahasa Ekspresi Reguler - Referensi Cepat.
Parameter evaluator
adalah delegasi untuk metode kustom yang Anda tentukan dan yang memeriksa setiap kecocokan. Metode kustom harus memiliki tanda tangan berikut agar sesuai dengan delegasi MatchEvaluator.
public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String
Metode kustom Anda mengembalikan string yang menggantikan input yang cocok.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan untuk domain aplikasi tempat metode dipanggil. Jika tidak ada waktu habis yang ditentukan dalam properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan.
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Catatan Bagi Pemanggil
Metode ini kehabisan waktu setelah interval yang sama dengan nilai batas waktu default domain aplikasi di mana ia dipanggil. Jika nilai waktu habis belum ditentukan untuk domain aplikasi, nilai InfiniteMatchTimeout, yang mencegah metode kehabisan waktu, digunakan. Metode statis yang direkomendasikan untuk mengevaluasi dan mengganti kecocokan pola adalah Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan), yang memungkinkan Anda mengatur interval waktu habis.
Lihat juga
- MatchEvaluator
- Substitusi dalam Ekspresi Reguler
- Elemen Bahasa Ekspresi Reguler
Berlaku untuk
Replace(String, String, Int32)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan.
public:
System::String ^ Replace(System::String ^ input, System::String ^ replacement, int count);
public string Replace (string input, string replacement, int count);
member this.Replace : string * string * int -> string
Public Function Replace (input As String, replacement As String, count As Integer) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- replacement
- String
String pengganti.
- count
- Int32
Berapa kali penggantian dapat terjadi.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pola ekspresi reguler tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
input
atau replacement
null
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggantikan lima kemunculan pertama karakter duplikat dengan satu karakter. Pola ekspresi reguler (\w)\1
cocok dengan kemunculan berturut-turut dari satu karakter dan menetapkan kemunculan pertama ke grup penangkapan pertama. Pola penggantian $1
menggantikan seluruh kecocokan dengan grup pertama yang diambil.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string str = "aabccdeefgghiijkklmm";
string pattern = "(\\w)\\1";
string replacement = "$1";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(str, replacement, 5);
Console.WriteLine("Original String: '{0}'", str);
Console.WriteLine("Replacement String: '{0}'", result);
}
}
// The example displays the following output:
// Original String: 'aabccdeefgghiijkklmm'
// Replacement String: 'abcdefghijkklmm'
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim str As String = "aabccdeefgghiijkklmm"
Dim pattern As String = "(\w)\1"
Dim replacement As String = "$1"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(str, replacement, 5)
Console.WriteLine("Original String: '{0}'", str)
Console.WriteLine("Replacement String: '{0}'", result)
End Sub
End Module
' The example displays the following output:
' Original String: 'aabccdeefgghiijkklmm'
' Replacement String: 'abcdefghijkklmm'
Keterangan
Pencarian kecocokan dimulai di awal string input
. Ekspresi reguler adalah pola yang ditentukan oleh konstruktor untuk objek Regex saat ini. Jika count
negatif, penggantian berlanjut ke akhir string. Jika count
melebihi jumlah kecocokan, semua kecocokan akan diganti.
Parameter replacement
menentukan string yang akan menggantikan kecocokan count
pertama di input
.
replacement
dapat terdiri dari kombinasi teks harfiah dan substitusi . Misalnya, pola penggantian a*${test}b
menyisipkan string "a*" diikuti dengan substring yang cocok dengan grup penangkapan test
, jika ada, diikuti oleh string "b". Karakter * tidak dikenali sebagai metacharacter dalam pola penggantian.
Nota
Penggantian adalah satu-satunya elemen bahasa ekspresi reguler yang dikenali dalam pola pengganti. Semua elemen bahasa ekspresi reguler lainnya, termasuk karakter lolos, hanya diizinkan dalam pola ekspresi reguler dan tidak dikenali dalam pola penggantian.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan oleh konstruktor Regex.Regex(String, RegexOptions, TimeSpan). Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat objek Regex dibuat. Jika tidak ada waktu habis yang ditentukan dalam panggilan konstruktor Regex atau di properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- Bahasa Ekspresi Reguler - Referensi Cepat
- Substitusi dalam Ekspresi Reguler
Berlaku untuk
Replace(String, MatchEvaluator)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan ekspresi reguler tertentu dengan string yang dikembalikan oleh delegasi MatchEvaluator.
public:
System::String ^ Replace(System::String ^ input, System::Text::RegularExpressions::MatchEvaluator ^ evaluator);
public string Replace (string input, System.Text.RegularExpressions.MatchEvaluator evaluator);
member this.Replace : string * System.Text.RegularExpressions.MatchEvaluator -> string
Public Function Replace (input As String, evaluator As MatchEvaluator) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- evaluator
- MatchEvaluator
Metode kustom yang memeriksa setiap kecocokan dan mengembalikan string asli yang cocok atau string pengganti.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pola ekspresi reguler tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
input
atau evaluator
null
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh kode berikut menampilkan string asli, cocok dengan setiap kata dalam string asli, mengonversi karakter pertama dari setiap kecocokan menjadi huruf besar, lalu menampilkan string yang dikonversi.
using System;
using System.Text.RegularExpressions;
class RegExSample
{
static string CapText(Match m)
{
// Get the matched string.
string x = m.ToString();
// If the first char is lower case...
if (char.IsLower(x[0]))
{
// Capitalize it.
return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
}
return x;
}
static void Main()
{
string text = "four score and seven years ago";
Console.WriteLine($"text=[{text}]");
Regex rx = new Regex(@"\w+");
string result = rx.Replace(text, new MatchEvaluator(RegExSample.CapText));
Console.WriteLine($"result=[{result}]");
}
}
// The example displays the following output:
// text=[four score and seven years ago]
// result=[Four Score And Seven Years Ago]
Imports System.Text.RegularExpressions
Module RegExSample
Function CapText(ByVal m As Match) As String
' Get the matched string.
Dim x As String = m.ToString()
' If the first char is lower case...
If Char.IsLower(x.Chars(0)) Then
' Capitalize it.
Return Char.ToUpper(x.Chars(0)) & x.Substring(1, x.Length - 1)
End If
Return x
End Function
Sub Main()
Dim text As String = "four score and seven years ago"
Console.WriteLine($"text=[{text}]")
Dim rx As New Regex("\w+")
Dim result As String = rx.Replace(text, AddressOf RegExSample.CapText)
Console.WriteLine($"result=[{result}]")
End Sub
End Module
' The example displays the following output:
' text=[four score and seven years ago]
' result=[Four Score And Seven Years Ago]
Keterangan
Metode Regex.Replace(String, MatchEvaluator) berguna untuk mengganti kecocokan ekspresi reguler jika salah satu kondisi berikut ini benar:
String pengganti tidak dapat dengan mudah ditentukan oleh pola penggantian ekspresi reguler.
String penggantian dihasilkan dari beberapa pemrosesan yang dilakukan pada string yang cocok.
String penggantian dihasilkan dari pemrosesan bersyarkat.
Metode ini setara dengan memanggil metode Regex.Matches(String) dan meneruskan setiap objek Match dalam koleksi MatchCollection yang dikembalikan ke delegasi evaluator
.
Ekspresi reguler adalah pola yang ditentukan oleh konstruktor untuk objek Regex saat ini.
Parameter evaluator
adalah delegasi untuk metode kustom yang Anda tentukan dan yang memeriksa setiap kecocokan. Metode kustom harus memiliki tanda tangan berikut agar sesuai dengan delegasi MatchEvaluator.
public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String
Metode kustom Anda mengembalikan string yang menggantikan input yang cocok.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan oleh konstruktor Regex.Regex(String, RegexOptions, TimeSpan). Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat objek Regex dibuat. Jika tidak ada waktu habis yang ditentukan dalam panggilan konstruktor Regex atau di properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- MatchEvaluator
- Substitusi dalam Ekspresi Reguler
- Bahasa Ekspresi Reguler - Referensi Cepat
Berlaku untuk
Replace(String, String)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti semua string yang cocok dengan pola ekspresi reguler dengan string pengganti yang ditentukan.
public:
System::String ^ Replace(System::String ^ input, System::String ^ replacement);
public string Replace (string input, string replacement);
member this.Replace : string * string -> string
Public Function Replace (input As String, replacement As String) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- replacement
- String
String pengganti.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pola ekspresi reguler tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
input
atau replacement
null
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut mendefinisikan ekspresi reguler, \s+
, yang cocok dengan satu atau beberapa karakter spasi putih. String pengganti, " ", menggantinya dengan karakter spasi tunggal.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "This is text with far too much " +
"white space.";
string pattern = "\\s+";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
}
}
// The example displays the following output:
// Original String: This is text with far too much white space.
// Replacement String: This is text with far too much white space.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "This is text with far too much " + _
"white space."
Dim pattern As String = "\s+"
Dim replacement As String = " "
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)
Console.WriteLine("Original String: {0}", input)
Console.WriteLine("Replacement String: {0}", result)
End Sub
End Module
' The example displays the following output:
' Original String: This is text with far too much white space.
' Replacement String: This is text with far too much white space.
Contoh berikut mendefinisikan ekspresi reguler, (\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?
, dan pola penggantian, $2
, yang menghapus simbol mata uang di depan atau berikutnya dari nilai numerik.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?";
string input = "$17.43 €2 16.33 £0.98 0.43 £43 12€ 17";
string replacement = "$2";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: '{0}'", input);
Console.WriteLine("Replacement String: '{0}'", result);
}
}
// The example displays the following output:
// Original String: '$17.43 €2 16.33 £0.98 0.43 £43 12€ 17'
// Replacement String: '17.43 2 16.33 0.98 0.43 43 12 17'
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?"
Dim input As String = "$17.43 €2 16.33 £0.98 0.43 £43 12€ 17"
Dim replacement As String = "$2"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)
Console.WriteLine("Original String: '{0}'", input)
Console.WriteLine("Replacement String: '{0}'", result)
End Sub
End Module
' The example displays the following output:
' Original String: '$17.43 €2 16.33 £0.98 0.43 £43 12€ 17'
' Replacement String: '17.43 2 16.33 0.98 0.43 43 12 17'
Ekspresi reguler ditafsirkan seperti yang ditunjukkan dalam tabel berikut.
Pola | Deskripsi |
---|---|
\p{Sc} |
Cocok dengan simbol mata uang.
{Sc} menunjukkan karakter apa pun yang merupakan anggota Simbol Unicode, kategori Mata Uang. |
\s? |
Cocokkan nol atau satu karakter spasi putih. |
(\p{Sc}\s?)? |
Cocokkan nol atau satu kemunculan kombinasi simbol mata uang diikuti oleh nol atau satu karakter spasi putih. Ini adalah grup penangkapan pertama. |
\d+ |
Cocokkan satu atau beberapa digit desimal. |
\.? |
Cocokkan nol atau satu kemunculan titik (digunakan sebagai karakter pemisah desimal). |
((?<=\.)\d+)? |
Jika titik adalah karakter sebelumnya, cocokkan satu atau beberapa digit desimal. Pola ini dapat dicocokkan dengan nol atau satu kali. |
(\d+\.?((?<=\.)\d+)?) |
Cocokkan pola satu atau beberapa digit desimal diikuti dengan periode opsional dan digit desimal tambahan. Ini adalah grup penangkap kedua. Panggilan ke metode Replace(String, String) menggantikan seluruh kecocokan dengan nilai grup yang diambil ini. |
(?(1)|\s?\p{Sc})? |
Jika grup pertama yang diambil ada, cocokkan string kosong. Jika tidak, cocokkan nol atau satu karakter spasi putih diikuti dengan simbol mata uang. |
Keterangan
Pencarian kecocokan dimulai di awal string input
. Ekspresi reguler adalah pola yang ditentukan oleh konstruktor untuk objek Regex saat ini.
Parameter replacement
menentukan string yang akan menggantikan setiap kecocokan di input
.
replacement
dapat terdiri dari kombinasi teks harfiah dan substitusi . Misalnya, pola penggantian a*${test}b
menyisipkan string "a*" diikuti dengan substring yang cocok dengan grup penangkapan test
, jika ada, diikuti oleh string "b". Karakter * tidak dikenali sebagai metacharacter dalam pola penggantian.
Nota
Penggantian adalah satu-satunya elemen bahasa ekspresi reguler yang dikenali dalam pola pengganti. Semua elemen bahasa ekspresi reguler lainnya, termasuk karakter lolos, hanya diizinkan dalam pola ekspresi reguler dan tidak dikenali dalam pola penggantian.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan oleh konstruktor Regex.Regex(String, RegexOptions, TimeSpan). Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat objek Regex dibuat. Jika tidak ada waktu habis yang ditentukan dalam panggilan konstruktor Regex atau di properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- Bahasa Ekspresi Reguler - Referensi Cepat
- Substitusi dalam Ekspresi Reguler
Berlaku untuk
Replace(String, MatchEvaluator, Int32)
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
- Sumber:
- Regex.Replace.cs
Dalam string input tertentu, mengganti jumlah maksimum string tertentu yang cocok dengan pola ekspresi reguler dengan string yang dikembalikan oleh delegasi MatchEvaluator.
public:
System::String ^ Replace(System::String ^ input, System::Text::RegularExpressions::MatchEvaluator ^ evaluator, int count);
public string Replace (string input, System.Text.RegularExpressions.MatchEvaluator evaluator, int count);
member this.Replace : string * System.Text.RegularExpressions.MatchEvaluator * int -> string
Public Function Replace (input As String, evaluator As MatchEvaluator, count As Integer) As String
Parameter
- input
- String
String untuk mencari kecocokan.
- evaluator
- MatchEvaluator
Metode kustom yang memeriksa setiap kecocokan dan mengembalikan string asli yang cocok atau string pengganti.
- count
- Int32
Jumlah maksimum kali penggantian akan terjadi.
Mengembalikan
String baru yang identik dengan string input, kecuali bahwa string pengganti menggantikan setiap string yang cocok. Jika pola ekspresi reguler tidak cocok dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah.
Pengecualian
input
atau evaluator
null
.
Waktu habis terjadi. Untuk informasi selengkapnya tentang waktu habis, lihat bagian Keterangan.
Contoh
Contoh berikut menggunakan ekspresi reguler untuk sengaja salah mengeja setengah kata dalam daftar. Ini menggunakan ekspresi reguler \w*(ie|ei)\w*
untuk mencocokkan kata-kata yang menyertakan karakter "yaitu" atau "ei". Ini meneruskan paruh pertama kata yang cocok ke metode ReverseLetter
, yang, pada gilirannya, menggunakan metode Replace(String, String, String, RegexOptions) untuk membalikkan "i" dan "e" dalam string yang cocok. Kata-kata yang tersisa tetap tidak berubah.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "deceive relieve achieve belief fierce receive";
string pattern = @"\w*(ie|ei)\w*";
Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
Console.WriteLine("Original string: " + input);
string result = rgx.Replace(input, new MatchEvaluator(Example.ReverseLetter),
input.Split(' ').Length / 2);
Console.WriteLine("Returned string: " + result);
}
static string ReverseLetter(Match match)
{
return Regex.Replace(match.Value, "([ie])([ie])", "$2$1",
RegexOptions.IgnoreCase);
}
}
// The example displays the following output:
// Original string: deceive relieve achieve belief fierce receive
// Returned string: decieve releive acheive belief fierce receive
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "deceive relieve achieve belief fierce receive"
Dim pattern As String = "\w*(ie|ei)\w*"
Dim rgx As New Regex(pattern, RegexOptions.IgnoreCase)
Console.WriteLine("Original string: " + input)
Dim result As String = rgx.Replace(input, AddressOf ReverseLetter,
input.Split(" "c).Length \ 2)
Console.WriteLine("Returned string: " + result)
End Sub
Public Function ReverseLetter(match As Match) As String
Return Regex.Replace(match.Value, "([ie])([ie])", "$2$1",
RegexOptions.IgnoreCase)
End Function
End Module
' The example displays the following output:
' Original string: deceive relieve achieve belief fierce receive
' Returned string: decieve releive acheive belief fierce receive
Ekspresi reguler \w*(ie|ei)\w*
didefinisikan seperti yang diperlihatkan dalam tabel berikut.
Pola | Deskripsi |
---|---|
\w* |
Cocokkan nol atau lebih karakter kata. |
(ie|ei) |
Cocokkan "ie" atau "ei". |
\w* |
Cocokkan nol atau lebih karakter kata. |
Pola ekspresi reguler ([ie])([ie])
dalam metode ReverseLetter
cocok dengan "i" atau "e" pertama dalam diphthong "ie" atau "ei" dan menetapkan huruf ke grup penangkapan pertama. Ini cocok dengan "i" atau "e" kedua dan menetapkan huruf ke grup penangkapan kedua. Kedua karakter kemudian dibalik dengan memanggil metode Replace(String, String, String) dengan pola penggantian $2$1
.
Keterangan
Metode Regex.Replace(String, MatchEvaluator, Int32) berguna untuk mengganti kecocokan ekspresi reguler jika salah satu kondisi berikut ini benar:
String pengganti tidak dapat dengan mudah ditentukan oleh pola penggantian ekspresi reguler.
String penggantian dihasilkan dari beberapa pemrosesan yang dilakukan pada string yang cocok.
String penggantian dihasilkan dari pemrosesan bersyarkat.
Metode ini setara dengan memanggil metode Regex.Matches(String) dan meneruskan objek count
Match pertama dalam koleksi MatchCollection yang dikembalikan ke delegasi evaluator
.
Ekspresi reguler adalah pola yang ditentukan oleh konstruktor untuk objek Regex saat ini.
Parameter evaluator
adalah delegasi untuk metode kustom yang Anda tentukan dan yang memeriksa setiap kecocokan. Metode kustom harus memiliki tanda tangan berikut agar sesuai dengan delegasi MatchEvaluator.
public string MatchEvaluatorMethod(Match match)
Public Function MatchEvaluatorMethod(match As Match) As String
Metode kustom Anda mengembalikan string yang menggantikan input yang cocok.
Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi penggantian melebihi interval waktu habis yang ditentukan oleh konstruktor Regex.Regex(String, RegexOptions, TimeSpan). Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat objek Regex dibuat. Jika tidak ada waktu habis yang ditentukan dalam panggilan konstruktor Regex atau di properti domain aplikasi, atau jika nilai batas waktu Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan
Karena metode mengembalikan input
tidak berubah jika tidak ada kecocokan, Anda dapat menggunakan metode Object.ReferenceEquals untuk menentukan apakah metode telah membuat penggantian pada string input.
Lihat juga
- MatchEvaluator
- Substitusi dalam Ekspresi Reguler
- Bahasa Ekspresi Reguler - Referensi Cepat