Đã 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://", "//"]] and
string.endswith[[".jpg", ".png"]]]:
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:
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 regexre.search["^ftp:// & .jpg$" ,string]
2 là một mô -đun tiêu chuẩn, vì vậy tôi đã chọnre.search["^ftp:// & .jpg$" ,string]
3 làm biếnre.search["^ftp:// & .jpg$" ,string]
- Nếu bạn sử dụng regex nhiều lần, bạn có thể sử dụng
4 để chế tạo máy trạng thái một lần và sau đó sử dụngre.search["^ftp:// & .jpg$" ,string]
5 sau đó để khớp với các chuỗire.search["^ftp:// & .jpg$" ,string]
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
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
0:7 gold badges59 silver badges87 bronze
badges re.search["^ftp:// & .jpg$" ,string]
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
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]
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ếnNế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ỗiimport 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
BiogeekColin Wang
21.3K21 Huy hiệu vàng81 Huy hiệu bạc140 Huy hiệu đồng8 silver badges13 bronze badges