2013-10-02 28 views
7

Tôi có câu hỏi đơn giản về biểu thức chính quy trong C#.

$ 1 và $ 2 trong biểu thức chính quy C# là gì?

Cả hai có thuộc nhóm không?

+2

FYI, đó là một phần của cú pháp biểu thức chính quy .NET. C# không hỗ trợ cho các biểu thức chính quy. Tất cả hỗ trợ biểu thức chính quy là một phần của .NET Framework. –

+1

Vui lòng đặt mẫu regex của bạn. $ 1, $ 2, $, có thể có nghĩa là điều khác nhau tùy thuộc vào ngữ cảnh nơi bạn đang sử dụng nó. Và @JohnSaunders là đúng. – celerno

+0

@celerno Là $ 1 bao giờ bất cứ điều gì khác hơn là một sự thay thế nhóm đánh số? –

Trả lời

8

Đó là giá trị của các nhóm bị bắt theo chỉ mục. $ 1 là nhóm được chụp đầu tiên và $ 2 là nhóm thứ hai được chụp. Như David đã chỉ ra, những giá trị này được sử dụng trong các mẫu thay thế.

string input = "Hello World"; 
string result = Regex.Replace(input, @"(\w+) (\w+)", "$2 $1"); 

Output: World Hello

3

Đây là những substitutions. Cụ thể là numbered group substitutions. Từ các tài liệu:

Các yếu tố ngôn ngữ $ Số này bao gồm các chuỗi cuối cùng kết hợp bởi số chụp nhóm trong chuỗi thay thế, nơi số là chỉ số của nhóm chụp. Ví dụ: mẫu thay thế $ 1 cho biết rằng chuỗi con phù hợp sẽ được thay thế bằng nhóm được chụp đầu tiên. Để biết thêm thông tin về các nhóm chụp được đánh số, xem Tạo nhóm theo Cụm từ thông dụng.

Chụp các nhóm không được gán tên rõ ràng bằng cách sử dụng cú pháp (?) Được đánh số từ trái sang phải bắt đầu từ một. Các nhóm được đặt tên cũng được đánh số từ trái sang phải, bắt đầu từ một số lớn hơn chỉ mục của nhóm chưa được đặt tên cuối cùng. Ví dụ, trong biểu thức chính quy (\ w) (? \ D), chỉ số của các chữ số được đặt tên nhóm là 2.

Nếu số không xác định một nhóm chụp hợp lệ theo quy định tại các mẫu biểu thức chính quy , Số $ được hiểu là chuỗi ký tự theo nghĩa đen được sử dụng để thay thế từng kết quả phù hợp.

Ví dụ sau sử dụng thay thế $ number để tách biểu tượng tiền tệ khỏi giá trị thập phân. Loại bỏ ký hiệu tiền tệ được tìm thấy ở đầu hoặc cuối giá trị bằng tiền và nhận ra hai dấu phân tách thập phân phổ biến nhất ("." Và ",").

using System; 
using System.Text.RegularExpressions; 

public class Example 
{ 
    public static void Main() 
    { 
     string pattern = @"\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*"; 
     string replacement = "$1"; 
     string input = "$16.32 12.19 £16.29 €18.29 €18,29"; 
     string result = Regex.Replace(input, pattern, replacement); 
     Console.WriteLine(result); 
    } 
} 
// The example displays the following output: 
//  16.32 12.19 16.29 18.29 18,29 
+0

Bạn có thể giải thích ví dụ trong liên kết sau không? [link] (http://msdn.microsoft.com/en-us/library/xwewhkd1.aspx) _Secound example_ ** line ** 'string replacement =" $ 2 ";' – Viki888

+0

Điều đó được giải thích trong đoạn đầu tiên của tài liệu mà tôi trích dẫn trong câu trả lời. '$ 1' là nhóm được thu thập đầu tiên,' $ 2' là nhóm được ghi thứ hai và cứ tiếp tục như vậy. –

Các vấn đề liên quan