Cờ nào sẽ tìm kiếm trên nhiều dòng trong python?

Biểu thức chính quy là các mẫu khớp văn bản được mô tả bằng cú pháp chính thức. Các mẫu được hiểu là một tập hợp các hướng dẫn, sau đó được thực thi với một chuỗi làm đầu vào để tạo ra một tập hợp con phù hợp hoặc phiên bản đã sửa đổi của bản gốc. Thuật ngữ "biểu thức chính quy" thường được rút ngắn thành "regex" hoặc "regexp" trong hội thoại. Các biểu thức có thể bao gồm khớp văn bản theo nghĩa đen, lặp lại, bố cục mẫu, phân nhánh và các quy tắc phức tạp khác. Một số lượng lớn các vấn đề về phân tích cú pháp dễ giải quyết bằng biểu thức chính quy hơn là bằng cách tạo một trình phân tích cú pháp và từ vựng có mục đích đặc biệt

Biểu thức chính quy thường được sử dụng trong các ứng dụng liên quan đến nhiều xử lý văn bản. Ví dụ: chúng thường được sử dụng làm mẫu tìm kiếm trong các chương trình chỉnh sửa văn bản được các nhà phát triển sử dụng, bao gồm vi, emac và IDE hiện đại. Chúng cũng là một phần không thể thiếu của các tiện ích dòng lệnh Unix như sed, grep và awk. Nhiều ngôn ngữ lập trình bao gồm hỗ trợ cho các biểu thức chính quy trong cú pháp ngôn ngữ [Perl, Ruby, Awk và Tcl]. Các ngôn ngữ khác, chẳng hạn như C, C++ và Python, hỗ trợ các biểu thức chính quy thông qua các thư viện mở rộng

Tồn tại nhiều triển khai mã nguồn mở của các biểu thức chính quy, mỗi triển khai chia sẻ một cú pháp cốt lõi chung nhưng có các phần mở rộng hoặc sửa đổi khác nhau đối với các tính năng nâng cao của chúng. Cú pháp được sử dụng trong mô-đun re của Python dựa trên cú pháp được sử dụng cho các biểu thức chính quy trong Perl, với một số cải tiến dành riêng cho Python

Phần này sử dụng các lệnh ND để tìm kiếm các từ liên tiếp trên nhiều dòng. Xem kỹ thuật Multiline

Những ví dụ này giải quyết việc tìm kiếm các từ xuất hiện gấp đôi trong tài liệu

Dễ dàng tìm các từ kép trong một dòng bằng GNU grep và tương tự với GNU sed

$ cat two-cities-dup1.txt
It was the best of times,
it was the worst of times,
it was the the age of wisdom,
it was the age of foolishness,

$ grep -E '\b[\w+]\s+\1\b' two-cities-dup1.txt
it was the the age of wisdom,

$ grep -n -E '\b[\w+]\s+\1\b' two-cities-dup1.txt
3:it was the the age of wisdom,

$ sed -En '/\b[\w+]\s+\1\b/p' two-cities-dup1.txt
it was the the age of wisdom,

$ sed -En '/\b[\w+]\s+\1\b/{=;p}' two-cities-dup1.txt
3
it was the the age of wisdom,

  • Cụm từ thông dụng ‘\b\w+\s+’ tìm kiếm ranh giới từ [‘\b’], theo sau là một hoặc nhiều ký tự từ [‘\w+’], tiếp theo là khoảng trắng [‘\s+’]. Xem tiện ích mở rộng regrec
  • Thêm dấu ngoặc đơn quanh biểu thức ‘[\w+]’ sẽ tạo ra một biểu thức con. Mẫu biểu thức chính quy '[PATTERN]\s+\1' xác định một biểu thức con [trong ngoặc đơn], theo sau là tham chiếu ngược, được phân tách bằng khoảng trắng. Kết hợp thành công có nghĩa là MẪU được lặp lại hai lần liên tiếp. Xem Back-references và Subexpressions
  • Biểu thức ranh giới từ [‘\b’] ở cả hai đầu đảm bảo các từ một phần không được khớp [e. g. 'the then' không phải là một kết hợp mong muốn]
  • Tùy chọn -E cho phép cú pháp biểu thức chính quy mở rộng, giảm bớt nhu cầu thêm dấu gạch chéo ngược trước dấu ngoặc đơn. Xem cú pháp ERE

Khi từ được nhân đôi kéo dài hai dòng, biểu thức chính quy ở trên sẽ không tìm thấy chúng vì grepsed hoạt động theo từng dòng

Bằng cách sử dụng các lệnh ND, sed có thể áp dụng các biểu thức chính quy trên nhiều dòng [nghĩa là nhiều dòng được lưu trữ trong không gian mẫu và biểu thức chính quy hoạt động trên đó]

$ cat two-cities-dup2.txt
It was the best of times, it was the
worst of times, it was the
the age of wisdom,
it was the age of foolishness,

$ sed -En '{N; /\b[\w+]\s+\1\b/{=;p} ; D}'  two-cities-dup2.txt
3
worst of times, it was the
the age of wisdom,

  • Lệnh N nối thêm dòng tiếp theo vào không gian mẫu [do đó đảm bảo nó chứa hai dòng liên tiếp trong mỗi chu kỳ]
  • Biểu thức chính quy sử dụng '\s+' cho dấu tách từ khớp với cả khoảng trắng và dòng mới
  • Biểu thức chính quy khớp, toàn bộ không gian mẫu được in bằng
    $ cat two-cities-dup2.txt
    It was the best of times, it was the
    worst of times, it was the
    the age of wisdom,
    it was the age of foolishness,
    
    $ sed -En '{N; /\b[\w+]\s+\1\b/{=;p} ; D}'  two-cities-dup2.txt
    3
    worst of times, it was the
    the age of wisdom,
    
    2. Không có dòng nào được in theo mặc định do tùy chọn -n
  • D xóa dòng đầu tiên khỏi không gian mẫu [cho đến dòng mới đầu tiên], sẵn sàng cho chu kỳ tiếp theo

Xem hướng dẫn sử dụng GNU

$ cat two-cities-dup2.txt
It was the best of times, it was the
worst of times, it was the
the age of wisdom,
it was the age of foolishness,

$ sed -En '{N; /\b[\w+]\s+\1\b/{=;p} ; D}'  two-cities-dup2.txt
3
worst of times, it was the
the age of wisdom,
4 để biết giải pháp thay thế bằng cách sử dụng
$ cat two-cities-dup2.txt
It was the best of times, it was the
worst of times, it was the
the age of wisdom,
it was the age of foolishness,

$ sed -En '{N; /\b[\w+]\s+\1\b/{=;p} ; D}'  two-cities-dup2.txt
3
worst of times, it was the
the age of wisdom,
5 và
$ cat two-cities-dup2.txt
It was the best of times, it was the
worst of times, it was the
the age of wisdom,
it was the age of foolishness,

$ sed -En '{N; /\b[\w+]\s+\1\b/{=;p} ; D}'  two-cities-dup2.txt
3
worst of times, it was the
the age of wisdom,
6 tại https. //gnu. org/s/coreutils/manual/html_node/Ép-và-xóa. html

Cờ nào sẽ tìm kiếm trên nhiều dòng?

Cờ m chỉ ra rằng một chuỗi đầu vào nhiều dòng phải được coi là nhiều dòng. Ví dụ: nếu m được sử dụng, ^ và $ thay đổi từ chỉ khớp ở đầu hoặc cuối của toàn bộ chuỗi thành đầu hoặc cuối của bất kỳ dòng nào trong chuỗi.

Python đa dòng là gì?

Ở đó. Công cụ sửa đổi tìm kiếm MULTILINE buộc ký hiệu ^ khớp ở đầu mỗi dòng văn bản [chứ không chỉ dòng đầu tiên] và ký hiệu $ khớp ở cuối mỗi dòng văn bản [chứ không chỉ dòng cuối cùng]. Ở đó. Công cụ sửa đổi tìm kiếm MULTILINE không có đối số

Cờ trong regex Python là gì?

Cờ ĐA DÒNG . Ghi chú. Cờ này được sử dụng với siêu ký tự ^ và $. Khi cờ này được chỉ định, ký tự mẫu ^ khớp ở đầu chuỗi và bắt đầu mỗi dòng mới [ \n ]. M flag is used as an argument inside the regex method to perform a match inside a multiline block of text. Note: This flag is used with metacharacter ^ and $ . When this flag is specified, the pattern character ^ matches at the beginning of the string and each newline's start [ \n ].

z0 9 có nghĩa là gì?

Trong một biểu thức chính quy, nếu bạn có [a-z] thì nó khớp với bất kỳ chữ cái viết thường nào. [0-9] khớp với bất kỳ chữ số nào. Vì vậy, nếu bạn có [a-z0-9], thì nó khớp với bất kỳ chữ cái hoặc chữ số viết thường nào .

Chủ Đề