Hướng dẫn python regex end of string - python regex cuối chuỗi

Bài viết này là tất cả về sự khởi đầu của dòng ^ và kết thúc của dòng $ các biểu thức chính quy trong thư viện Python, & nbsp; re.start of line ^ and end of line $ regular expressions in Python’s re library.

Hai regexes này là nền tảng cho tất cả các biểu thức thường xuyên, ngay cả ngoài thế giới Python. Vì vậy, đầu tư 5 phút ngay bây giờ và làm chủ chúng một lần và mãi mãi!

Bạn cũng có thể nghe video khi bạn cuộn qua bài viết. Nó sẽ làm cho việc học dễ dàng hơn nhiều:

Python Regex - Cách khớp với sự khởi đầu của dòng (^) và kết thúc dòng ($)

Bài viết liên quan: Siêu cường Python Regex - Hướng dẫn cuối cùng Python Regex Superpower – The Ultimate Guide

Bạn có muốn thành thạo siêu cường Regex không? Kiểm tra cuốn sách mới của tôi Cách thông minh nhất để học các biểu thức thường xuyên trong Python với cách tiếp cận 3 bước sáng tạo để học tập tích cực: (1) Nghiên cứu một chương sách, (2) Giải câu đố mã và (3) xem video chương giáo dục . Check out my new book The Smartest Way to Learn Regular Expressions in Python with the innovative 3-step approach for active learning: (1) study a book chapter, (2) solve a code puzzle, and (3) watch an educational chapter video.

Python re bắt đầu chuỗi (^) regex

Bạn có thể sử dụng toán tử Caret ^ để khớp với đầu chuỗi. Ví dụ, điều này rất hữu ích nếu bạn muốn đảm bảo rằng một mẫu xuất hiện ở đầu chuỗi. Đây là một ví dụ:

>>> import re
>>> re.findall('^PYTHON', 'PYTHON is fun.')
['PYTHON']

Phương thức Findall (mẫu, chuỗi) tìm thấy tất cả các lần xuất hiện của mẫu trong chuỗi. CARET ở đầu mẫu ‘^Python, đảm bảo rằng bạn chỉ khớp từ python ở đầu chuỗi. Trong ví dụ trước, điều này không tạo ra sự khác biệt. Nhưng trong ví dụ tiếp theo, nó có:

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']

Mặc dù có hai lần xuất hiện của chuỗi con ‘Python, nhưng chỉ có một phần phụ phù hợp ở đầu chuỗi.

Nhưng điều gì sẽ xảy ra nếu bạn muốn khớp không chỉ ở đầu chuỗi mà ở đầu mỗi dòng trong một chuỗi nhiều dòng? Nói cách khác:

Python re start-of-line (^) regex

Toán tử Caret, theo mặc định, chỉ áp dụng cho việc bắt đầu một chuỗi. Vì vậy, nếu bạn đã có một chuỗi nhiều dòng, ví dụ, khi đọc một tệp văn bản, nó vẫn sẽ chỉ khớp một lần: ở đầu chuỗi.

Tuy nhiên, bạn có thể muốn khớp ở đầu mỗi dòng. Ví dụ: bạn có thể muốn tìm tất cả các dòng bắt đầu bằng ‘Python, trong một chuỗi nhất định.

Bạn có thể chỉ định rằng toán tử Caret khớp với đầu của mỗi dòng thông qua cờ Re.Multiline. Ở đây, một ví dụ cho thấy cả hai cách sử dụng mà không có và với việc đặt cờ Re.Multiline:

>>> import re
>>> text = '''
Python is great.
Python is the fastest growing
major programming language in
the world.
Pythonistas thrive.'''
>>> re.findall('^Python', text)
[]
>>> re.findall('^Python', text, re.MULTILINE)
['Python', 'Python', 'Python']
>>> 

Đầu ra đầu tiên là danh sách trống vì chuỗi ‘Python, không xuất hiện ở đầu chuỗi.

Đầu ra thứ hai là danh sách ba chuỗi con phù hợp vì chuỗi ‘Python, xuất hiện ba lần ở đầu một dòng.

Python re.sub ()

Phương thức Re.sub (mẫu, repl, chuỗi, đếm = 0, flag = 0) trả về một chuỗi mới trong đó tất cả các lần xuất hiện của mẫu trong chuỗi cũ được thay thế bằng cách sao lại. Đọc thêm trong hướng dẫn blog Finxter. method returns a new string where all occurrences of the pattern in the old string are replaced by repl. Read more in the Finxter blog tutorial.

Bạn có thể sử dụng toán tử Caret để thay thế bất cứ nơi nào một số mẫu xuất hiện ở đầu chuỗi:

>>> import re
>>> re.sub('^Python', 'Code', 'Python is \nPython')
'Code is \nPython'

Chỉ phần đầu của chuỗi khớp với mẫu regex để bạn chỉ có một thay thế.

Một lần nữa, bạn có thể sử dụng cờ Re.Multiline để khớp với phần đầu của mỗi dòng với toán tử Caret:

>>> re.sub('^Python', 'Code', 'Python is \nPython', flags=re.MULTILINE)
'Code is \nCode'

Bây giờ, bạn thay thế cả hai lần xuất hiện của chuỗi ‘Python.

Python re.match (), re.search (), re.findall () và re.fullmatch ()

Hãy để nhanh chóng tóm tắt lại các phương pháp Regex quan trọng nhất trong Python:

  • Phương thức re.findall (mẫu, chuỗi, flag = 0) trả về danh sách các khớp chuỗi. Đọc thêm trong hướng dẫn blog của chúng tôi.re.findall(pattern, string, flags=0) method returns a list of string matches. Read more in our blog tutorial.
  • Phương thức RE.Search (mẫu, chuỗi, cờ = 0) trả về một đối tượng khớp của trận đấu đầu tiên. Đọc thêm trong hướng dẫn blog của chúng tôi.re.search(pattern, string, flags=0) method returns a match object of the first match. Read more in our blog tutorial.
  • Phương thức re.match (mẫu, chuỗi, cờ = 0) trả về một đối tượng khớp nếu regex khớp với đầu chuỗi. Đọc thêm trong hướng dẫn blog của chúng tôi.re.match(pattern, string, flags=0) method returns a match object if the regex matches at the beginning of the string. Read more in our blog tutorial.
  • Phương thức re.fullmatch (mẫu, chuỗi, cờ = 0) trả về một đối tượng khớp nếu regex khớp với toàn bộ chuỗi. Đọc thêm trong hướng dẫn blog của chúng tôi.re.fullmatch(pattern, string, flags=0) method returns a match object if the regex matches the whole string. Read more in our blog tutorial.

Bạn có thể thấy rằng tất cả bốn phương thức tìm kiếm một mẫu trong một chuỗi nhất định. Bạn có thể sử dụng toán tử Caret ^ trong mỗi mẫu để khớp với đầu chuỗi. Ở đây, một ví dụ cho mỗi phương pháp:

>>> import re
>>> text = 'Python is Python'
>>> re.findall('^Python', text)
['Python']
>>> re.search('^Python', text)

>>> re.match('^Python', text)

>>> re.fullmatch('^Python', text)
>>> 

Vì vậy, bạn có thể sử dụng toán tử Caret để khớp ở đầu chuỗi. Tuy nhiên, bạn nên lưu ý rằng nó không có ý nghĩa gì khi sử dụng nó cho các phương thức khớp () và fullmatch () vì theo định nghĩa, chúng bắt đầu bằng cách cố gắng khớp với ký tự đầu tiên của chuỗi.

Bạn cũng có thể sử dụng cờ Re.Multiline để khớp với đầu của mỗi dòng (thay vì chỉ là đầu của chuỗi):

>>> text = '''Python is
Python'''
>>> re.findall('^Python', text, flags=re.MULTILINE)
['Python', 'Python']
>>> re.search('^Python', text, flags=re.MULTILINE)

>>> re.match('^Python', text, flags=re.MULTILINE)

>>> re.fullmatch('^Python', text, flags=re.MULTILINE)
>>> 

Một lần nữa, nó có thể đặt câu hỏi liệu điều này có ý nghĩa đối với các phương thức re.match () và re.fullmatch () vì họ chỉ tìm kiếm một trận đấu ở đầu chuỗi.

Python re kết thúc chuỗi ($) regex

Tương tự, bạn có thể sử dụng toán tử dấu hiệu đô la $ để khớp với phần cuối của chuỗi. Đây là một ví dụ:

>>> import re
>>> re.findall('fun$', 'PYTHON is fun')
['fun']

Phương thức findall () tìm thấy tất cả các lần xuất hiện của mẫu trong chuỗi, mặc dù dấu hiệu đô la dấu hiệu $ đảm bảo rằng regex chỉ khớp với cuối chuỗi.

Điều này có thể thay đổi đáng kể ý nghĩa của regex của bạn như bạn có thể thấy trong ví dụ tiếp theo:

>>> re.findall('fun$', 'fun fun fun')
['fun']

Mặc dù, có ba lần xuất hiện của chuỗi con ’niềm vui, nhưng chỉ có một phần phụ phù hợp ở cuối chuỗi.

Nhưng điều gì sẽ xảy ra nếu bạn muốn khớp không chỉ ở cuối chuỗi mà ở cuối mỗi dòng trong một chuỗi nhiều dòng?

Python Re End of Line ($)

Toán tử ký hiệu đô la, theo mặc định, chỉ áp dụng cho cuối chuỗi. Vì vậy, nếu bạn đã có một chuỗi nhiều dòng, ví dụ, khi đọc một tệp văn bản, nó vẫn sẽ chỉ khớp một lần: ở cuối chuỗi.

Tuy nhiên, bạn có thể muốn khớp ở cuối mỗi dòng. Ví dụ: bạn có thể muốn tìm tất cả các dòng kết thúc bằng ‘.py.

Để đạt được điều này, bạn có thể chỉ định rằng toán tử dấu hiệu đồng đô la phù hợp với phần cuối của mỗi dòng thông qua cờ Re.Multiline. Ở đây, một ví dụ cho thấy cả hai cách sử dụng mà không có và với việc đặt cờ Re.Multiline:

>>> import re
>>> text = '''
Coding is fun
Python is fun
Games are fun
Agreed?'''
>>> re.findall('fun$', text)
[]
>>> re.findall('fun$', text, flags=re.MULTILINE)
['fun', 'fun', 'fun']
>>> 

Đầu ra đầu tiên là danh sách trống vì chuỗi ’vui nhộn không xuất hiện ở cuối chuỗi.

Đầu ra thứ hai là danh sách ba chuỗi con phù hợp vì chuỗi ’vui nhộn xuất hiện ba lần ở cuối dòng.

Python re.sub ()

Phương thức Re.sub (mẫu, repl, chuỗi, đếm = 0, flag = 0) trả về một chuỗi mới trong đó tất cả các lần xuất hiện của mẫu trong chuỗi cũ được thay thế bằng cách sao lại. Đọc thêm trong hướng dẫn blog Finxter. method returns a new string where all occurrences of the pattern in the old string are replaced by repl. Read more in the Finxter blog tutorial.

Bạn có thể sử dụng toán tử dấu hiệu đô la để thay thế bất cứ nơi nào một số mẫu xuất hiện ở cuối chuỗi:

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']
0

Chỉ có phần cuối của chuỗi khớp với mẫu Regex, vì vậy chỉ có một thay thế.

Một lần nữa, bạn có thể sử dụng cờ Re.Multiline để khớp với phần cuối của mỗi dòng với toán tử dấu hiệu đô la:

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']
1

Bây giờ, bạn thay thế cả hai lần xuất hiện của chuỗi ‘Python.

Python re.match (), re.search (), re.findall () và re.fullmatch ()

Tất cả bốn phương thức, re.findall (), re.search (), re.match () và re.fullmatch () - Tìm kiếm một mẫu trong một chuỗi nhất định. Bạn có thể sử dụng toán tử dấu hiệu đô la $ trong mỗi mẫu để khớp với phần cuối của chuỗi. Ở đây, một ví dụ cho mỗi phương pháp:

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']
2

Vì vậy, bạn có thể sử dụng toán tử dấu hiệu đô la để khớp ở cuối chuỗi. Tuy nhiên, bạn nên lưu ý rằng nó không có ý nghĩa gì khi sử dụng nó cho các phương thức FullMatch () vì theo định nghĩa, đã yêu cầu ký tự cuối cùng của chuỗi là một phần của phần phụ phù hợp.

Bạn cũng có thể sử dụng cờ Re.Multiline để khớp với phần cuối của mỗi dòng (thay vì chỉ kết thúc toàn bộ chuỗi):

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']
3

Vì mẫu không phù hợp với tiền tố chuỗi, cả re.match () và re.fullmatch () trả về kết quả trống.

Làm thế nào để phù hợp với các ký hiệu Caret (^) hoặc Dollar ($) trong Regex của bạn?

Bạn biết rằng các biểu tượng chăm sóc và đô la có ý nghĩa đặc biệt trong mô -đun biểu thức chính quy Python, chúng khớp với phần đầu hoặc đầu của mỗi chuỗi/dòng. Nhưng điều gì sẽ xảy ra nếu bạn tìm kiếm biểu tượng Caret (^) hoặc Dollar ($) thì sao? Làm thế nào bạn có thể khớp chúng trong một chuỗi?

Câu trả lời rất đơn giản: Thoát khỏi các biểu tượng chăm sóc hoặc đô la trong biểu thức thông thường của bạn bằng cách sử dụng dấu gạch chéo ngược. Cụ thể, hãy sử dụng ‘\^, thay vì‘^và ‘\ $, thay vì‘ $. Đây là một ví dụ:

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']
4

Bằng cách thoát khỏi các biểu tượng đặc biệt ^ và $, bạn nói với động cơ Regex bỏ qua ý nghĩa đặc biệt của chúng.

Regex hài hước

Hướng dẫn python regex end of string - python regex cuối chuỗi
Đợi đã, quên thoát một không gian. Wheeeeee [Taptaptap] Eeeeee. (nguồn)

Đi đâu từ đây?

Bạn đã học được tất cả mọi thứ bạn cần biết về nhà điều hành Caret ^ và nhà điều hành dấu hiệu đô la $ trong hướng dẫn Regex này.

Tóm tắt: Toán tử Caret ^ khớp với đầu chuỗi. Toán tử ký hiệu đô la $ khớp với cuối chuỗi. Nếu bạn muốn khớp ở đầu hoặc cuối của mỗi dòng trong một chuỗi nhiều dòng, bạn có thể đặt cờ Re.Multiline trong tất cả các phương thức RE có liên quan.: The caret operator ^ matches at the beginning of a string. The dollar-sign operator $ matches at the end of a string. If you want to match at the beginning or end of each line in a multi-line string, you can set the re.MULTILINE flag in all the relevant re methods.

Bạn muốn kiếm tiền trong khi bạn học Python? Các lập trình viên Python trung bình kiếm được hơn 50 đô la mỗi giờ. Bạn có thể trở thành trung bình, bạn có thể không? Average Python programmers earn more than $50 per hour. You can become average, can’t you?

Tham gia hội thảo trên web miễn phí chỉ cho bạn cách trở thành chủ doanh nghiệp mã hóa phát triển mạnh trực tuyến!

[Hội thảo trên web] Bạn có phải là nhà phát triển tự do sáu con số không?

Tham gia với chúng tôi. Nó vui! 🙂

Khóa học Python Regex

Các kỹ sư của Google là những bậc thầy biểu hiện thường xuyên. Công cụ tìm kiếm của Google là một công cụ xử lý văn bản khổng lồ, trích xuất giá trị từ hàng nghìn tỷ trang web. & NBSP; & NBSP;The Google search engine is a massive text-processing engine that extracts value from trillions of webpages.  

Các kỹ sư Facebook là những bậc thầy biểu hiện thường xuyên. Các mạng xã hội như Facebook, WhatsApp và Instagram kết nối con người qua tin nhắn văn bản. & NBSP; Social networks like Facebook, WhatsApp, and Instagram connect humans via text messages. 

Các kỹ sư Amazon là những bậc thầy biểu hiện thường xuyên. Gã khổng lồ thương mại sản phẩm tàu ​​điện tử dựa trên mô tả sản phẩm văn bản.Ecommerce giants ship products based on textual product descriptions.  Regular expressions ​rule the game ​when text processing ​meets computer science. 

Nếu bạn cũng muốn trở thành một bậc thầy biểu hiện thông thường, hãy xem khóa học Python Regex toàn diện nhất trên hành tinh:

Hướng dẫn python regex end of string - python regex cuối chuỗi

Hướng dẫn python regex end of string - python regex cuối chuỗi

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Mẫu regex cho kết thúc chuỗi là gì?

+\ r? \ Z khớp với phần cuối của chuỗi và cũng khớp với một chuỗi kết thúc với \ n hoặc \ r \ n. Z matches the end of a string, and also matches a string that ends with \n or \r\n .

Làm thế nào để bạn khớp với phần cuối của một chuỗi trong Python?

Chuỗi python endswith () Phương thức python Phương thức chuỗi endSwith () trả về true nếu chuỗi kết thúc với hậu tố được chỉ định, nếu không hãy trả về sai tùy chọn hạn chế khớp với các chỉ số đã cho bắt đầu và kết thúc. Python string method endswith() returns True if the string ends with the specified suffix, otherwise return False optionally restricting the matching with the given indices start and end.

Làm thế nào để bạn kết thúc một biểu hiện chính quy trong Python?

Ký tự đặc biệt trong biểu thức chính quy..
^ Phù hợp với sự khởi đầu: (Caret.) ....
$ khớp với kết thúc: khớp với kết thúc của chuỗi hoặc ngay trước khi dòng mới ở cuối chuỗi và ở chế độ đa dòng cũng khớp trước khi dòng mới ..

Làm thế nào để bạn kiểm tra xem một chuỗi kết thúc với một số trong Python Regex?

Để kiểm tra xem một chuỗi kết thúc bằng một số: gọi phương thức str.isDigit () trên ký tự.Nếu phương thức trả về true, chuỗi kết thúc bằng một số.Call the str. isdigit() method on the character. If the method returns True , the string ends with a number.