cuốn sách gpt4 ai đã làm

Đã tìm thấy mẫu lỗi chuỗi con biểu thức chính quy C++

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:28:50 26 4
mua khóa gpt4 Nike

Tôi đang cố gắng hiểu C++ biểu thức chính quy logic

std::string s ("Ni Ni Ni NI");
std::regex e ("(Ni)");

std::smatch sm;
std::regex_search (s,sm,e);
std::cout << "đối tượng chuỗi có " << sm.size() << " khớp\n";

Biểu mẫu này có nên cung cấp cho tôi số lượng chuỗi con phù hợp với mẫu của tôi không? Bởi vì nó luôn cho tôi 1 trận đấu và nó báo trận đấu là [Ni , Ni]; Nhưng tôi cần nó để tìm từng mẫu; chúng phải là 3 và như thế này [Ni] [Ni] [Ni]

câu trả lời hay nhất

chức năng std::regex_search Chỉ kết quả cho kết quả khớp đầu tiên được tìm thấy trong chuỗi của bạn mới được trả về.

Đây là mã từ bạn và cplusplus.com Hợp nhất. Ý tưởng là tìm kiếm kết quả khớp đầu tiên, phân tích cú pháp và sau đó bắt đầu lại với phần còn lại của chuỗi (nghĩa là chuỗi con ngay sau kết quả khớp tìm thấy, có thể được thực hiện thông qua match_results::hậu tố đã lấy lại).

Lưu ý rằng biểu thức chính quy có hai nhóm chụp (Ni*)([^ ]*).

std::string s("những hiệp sĩ nói Niaaa và Niooo");
std::smatch m;
std::regex e("(Ni*)([^ ]*)");

trong khi (std::regex_search(s, m, e))
{
cho (tự động x : m)
std::cout << x.str() << " ";

std::cout << std::endl;
s = m.suffix().str();
}

Điều này mang lại đầu ra sau:

Niaaa Ni aaa

Không không không không

Như bạn có thể thấy, đối với mỗi lệnh gọi tới biểu thức chính quy_search, chúng tôi có thông tin sau:

  • Nội dung của toàn bộ trò chơi,
  • Nội dung của mỗi nhóm chụp.

Vì chúng tôi có hai nhóm thu thập nên điều này cung cấp 3 chuỗi cho mỗi biểu thức chính quy_search.

biên tập:Trong trường hợp của bạn, nếu bạn muốn truy xuất mọi "Ni", tất cả những gì bạn cần làm là thay thế

std::regex e("(Ni*)([^ ]*)");

std::regex e("(Ni)");

Tuy nhiên, bạn vẫn cần lặp lại chuỗi của mình.

Về việc khám phá các mẫu lỗi chuỗi con biểu thức chính quy C++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/25648620/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress