Hướng dẫn python regex starts with and ends with - python regex bắt đầu bằng và kết thúc bằng

Đã hỏi 10 năm, 7 tháng trước 10 years, 7 months ago

Đã xem 125k lần 125k times

Tôi có một chuỗi và tôi muốn khớp một cái gì đó khi bắt đầu và kết thúc với một mẫu tìm kiếm duy nhất. Điều này có thể giải quyết như thế nào?

Giả sử chúng ta có một chuỗi như:

 string = "ftp://www.somewhere.com/over/the/rainbow/image.jpg"

Tôi muốn làm điều gì đó như thế này:

 re.search("^ftp:// & .jpg$" ,string)

Rõ ràng, nó không chính xác, nhưng tôi hy vọng nó có được quan điểm của tôi. Điều này có thể?

Đã hỏi ngày 30 tháng 3 năm 2012 lúc 16:37Mar 30, 2012 at 16:37

0

Làm thế nào về việc không sử dụng một biểu thức chính quy ở tất cả?

if string.startswith("ftp://") and string.endswith(".jpg"):

Bạn không nghĩ rằng điều này đọc đẹp hơn?

Bạn cũng có thể hỗ trợ nhiều tùy chọn cho bắt đầu và kết thúc:

if (string.startswith(("ftp://", "http://")) and 
    string.endswith((".jpg", ".png"))):

Hướng dẫn python regex starts with and ends with - python regex bắt đầu bằng và kết thúc bằng

Niklas B.

90,8K17 Huy hiệu vàng191 Huy hiệu bạc2222 Huy hiệu đồng17 gold badges191 silver badges222 bronze badges

Đã trả lời ngày 30 tháng 3 năm 2012 lúc 16:39Mar 30, 2012 at 16:39

Sven Marnachsven MarnachSven Marnach

549K114 Huy hiệu vàng919 Huy hiệu bạc822 Huy hiệu Đồng114 gold badges919 silver badges822 bronze badges

2

re.match sẽ khớp với chuỗi ở đầu, trái ngược với

 re.search("^ftp:// & .jpg$" ,string)
0:

re.match(r'(ftp|http)://.*\.(jpg|png)$', s)

Hai điều cần lưu ý ở đây:

  •  re.search("^ftp:// & .jpg$" ,string)
    
    1 được sử dụng cho chuỗi theo nghĩa đen để làm cho nó tầm thường để có dấu gạch chéo ngược bên trong regex
  •  re.search("^ftp:// & .jpg$" ,string)
    
    2 là một mô -đun tiêu chuẩn, vì vậy tôi đã chọn
     re.search("^ftp:// & .jpg$" ,string)
    
    3 làm biến
  • Nếu bạn sử dụng regex nhiều lần, bạn có thể sử dụng
     re.search("^ftp:// & .jpg$" ,string)
    
    4 để chế tạo máy trạng thái một lần và sau đó sử dụng
     re.search("^ftp:// & .jpg$" ,string)
    
    5 sau đó để khớp với các chuỗi

Nếu bạn muốn, bạn cũng có thể sử dụng mô -đun

 re.search("^ftp:// & .jpg$" ,string)
6 để phân tích URL cho bạn (mặc dù bạn vẫn cần trích xuất phần mở rộng):

>>> allowed_schemes = ('http', 'ftp')
>>> allowed_exts = ('png', 'jpg')
>>> from urlparse import urlparse
>>> url = urlparse("ftp://www.somewhere.com/over/the/rainbow/image.jpg")
>>> url.scheme in allowed_schemes
True
>>> url.path.rsplit('.', 1)[1] in allowed_exts
True

Hướng dẫn python regex starts with and ends with - python regex bắt đầu bằng và kết thúc bằng

Biogeek

21.3K21 Huy hiệu vàng81 Huy hiệu bạc140 Huy hiệu đồng21 gold badges81 silver badges140 bronze badges

Đã trả lời ngày 30 tháng 3 năm 2012 lúc 16:41Mar 30, 2012 at 16:41

Niklas B.Niklas B.Niklas B.

90,8K17 Huy hiệu vàng191 Huy hiệu bạc2222 Huy hiệu đồng17 gold badges191 silver badges222 bronze badges

0

Đã trả lời ngày 30 tháng 3 năm 2012 lúc 16:39

Sven Marnachsven MarnachMar 30, 2012 at 16:40

549K114 Huy hiệu vàng919 Huy hiệu bạc822 Huy hiệu ĐồngJKirchartz

re.match sẽ khớp với chuỗi ở đầu, trái ngược với

 re.search("^ftp:// & .jpg$" ,string)
0:7 gold badges59 silver badges87 bronze badges

Hai điều cần lưu ý ở đây:

 re.search(r'^ftp://.*\.jpg$' ,string)

 re.search("^ftp:// & .jpg$" ,string)
1 được sử dụng cho chuỗi theo nghĩa đen để làm cho nó tầm thường để có dấu gạch chéo ngược bên trong regex

Đã trả lời ngày 30 tháng 3 năm 2012 lúc 16:39Mar 30, 2012 at 16:39

Sven Marnachsven MarnachHoward

549K114 Huy hiệu vàng919 Huy hiệu bạc822 Huy hiệu Đồng8 gold badges61 silver badges82 bronze badges

0

import re

s = "ftp://www.somewhere.com/over/the/rainbow/image.jpg"
print(re.search("^ftp://.*\.jpg$", s).group(0))

re.match sẽ khớp với chuỗi ở đầu, trái ngược với

 re.search("^ftp:// & .jpg$" ,string)
0:Mar 30, 2012 at 16:43

Hai điều cần lưu ý ở đây:Roman Bataev

 re.search("^ftp:// & .jpg$" ,string)
1 được sử dụng cho chuỗi theo nghĩa đen để làm cho nó tầm thường để có dấu gạch chéo ngược bên trong regex2 gold badges20 silver badges15 bronze badges

 re.search("^ftp:// & .jpg$" ,string)
2 là một mô -đun tiêu chuẩn, vì vậy tôi đã chọn
 re.search("^ftp:// & .jpg$" ,string)
3 làm biến

Nếu bạn sử dụng regex nhiều lần, bạn có thể sử dụng

 re.search("^ftp:// & .jpg$" ,string)
4 để chế tạo máy trạng thái một lần và sau đó sử dụng
 re.search("^ftp:// & .jpg$" ,string)
5 sau đó để khớp với các chuỗi

import re

s = '[11-09 22:55:41] [INFO ]  [  4560] source_loss: 0.717, target_loss: 1.279, 
transfer_loss:  0.001, total_loss:  0.718'

print([float(s) if '.' in s else int(s) for s in re.findall(r'-?\d+\.?\d*', s)])

Nếu bạn muốn, bạn cũng có thể sử dụng mô -đun

 re.search("^ftp:// & .jpg$" ,string)
6 để phân tích URL cho bạn (mặc dù bạn vẫn cần trích xuất phần mở rộng):

>>> allowed_schemes = ('http', 'ftp')
>>> allowed_exts = ('png', 'jpg')
>>> from urlparse import urlparse
>>> url = urlparse("ftp://www.somewhere.com/over/the/rainbow/image.jpg")
>>> url.scheme in allowed_schemes
True
>>> url.path.rsplit('.', 1)[1] in allowed_exts
True
Nov 10, 2018 at 7:04

Hướng dẫn python regex starts with and ends with - python regex bắt đầu bằng và kết thúc bằng

BiogeekColin Wang

21.3K21 Huy hiệu vàng81 Huy hiệu bạc140 Huy hiệu đồng8 silver badges13 bronze badges

'$' Có nghĩa là gì ở Regex?

$ có nghĩa là "khớp với phần cuối của chuỗi" (vị trí sau ký tự cuối cùng trong chuỗi).Cả hai đều được gọi là neo và đảm bảo rằng toàn bộ chuỗi được khớp thay vì chỉ là một chuỗi con.Match the end of the string" (the position after the last character in the string). Both are called anchors and ensure that the entire string is matched instead of just a substring.

Sự khác biệt là gì [] và () trong regex?

[] biểu thị một lớp ký tự. () biểu thị một nhóm bắt giữ.[A-Z0-9]-Một ký tự nằm trong phạm vi A-Z hoặc 0-9.(A-Z0-9)-Chụp rõ ràng A-Z0-9. () denotes a capturing group. [a-z0-9] -- One character that is in the range of a-z OR 0-9. (a-z0-9) -- Explicit capture of a-z0-9 .

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 ..

\ R và \ n trong regex là gì?

Regex nhận ra các trình tự thoát phổ biến như \ n cho Newline, \ t cho tab, \ r để quay lại vận chuyển, \ nnn cho số octal lên tới 3 chữ số, \ xhh cho mã hex hai chữ số, \ uhhhh cho mộtUnicode 4 chữ số, \ uhhhhhhhhh cho một unicode 8 chữ số.\n for newline, \t for tab, \r for carriage-return, \nnn for a up to 3-digit octal number, \xhh for a two-digit hex code, \uhhhh for a 4-digit Unicode, \uhhhhhhhh for a 8-digit Unicode.