2012-05-10 78 views
10

Tôi đang cố gắng tách một chuỗi bằng Python để tôi nhận được mọi thứ trước một regex nhất định.Phân tách chuỗi bằng Python bằng cách sử dụng regex

dụ chuỗi: "Some.File.Num10.example.txt"

Tôi cần tất cả mọi thứ trước khi phần này: "Num10", regex: r'Num\d\d' (số lượng sẽ khác nhau và có thể là những gì xảy ra sau khi).

Bất kỳ ý tưởng nào về cách thực hiện việc này?

Trả lời

10
>>> import re 
>>> s = "Some.File.Num10.example.txt" 
>>> p = re.compile("Num\d{2}") 
>>> match = p.search(s) 
>>> s[:match.start()] 
'Some.File.' 

này sẽ hiệu quả hơn là làm một sự chia rẽ vì tìm kiếm không có để quét toàn bộ chuỗi. Nó phá vỡ trong trận đấu đầu tiên. Trong ví dụ của bạn, nó sẽ không tạo ra khác biệt vì các chuỗi ngắn nhưng trong trường hợp chuỗi của bạn rất dài và bạn biết rằng kết quả khớp sẽ bắt đầu, thì cách tiếp cận này sẽ nhanh hơn.

Tôi vừa viết một chương trình nhỏ để tìm kiếm tiểu sử() và chia() và xác nhận xác nhận ở trên.

+0

Bạn có thể sử dụng 'p = re.compile (" Num \ d ")' chỉ đơn giản là số có thể là bất cứ điều gì vì vậy chúng tôi chỉ quan tâm khi nó bắt đầu trong chuỗi. – theharshest

4

Bạn có thể sử dụng Python của re.split()

import re 

my_str = "This is a string." 

re.split("\W+", my_str) 

['This', 'is', 'a', 'string', ''] 
9
>>> import re 
>>> text = "Some.File.Num10.example.txt" 
>>> re.split(r'Num\d{2}',text)[0] 
'Some.File.' 
Các vấn đề liên quan