Sử dụng biểu thức chính quy trong python

Chào các bác.Hôm nay em xin gửi đến các bác 1 câu hỏi như sau.
em muốn nhập 1 số điện thoại từ bàn phím và em dùng biểu thúc chính quy để kiểm tra xem có hợp lệ hay không? vd đơn giản mong các bác đừng cười.
Cảm ơn!

1 Like

Mình không biết python, như mình sẽ đưa ra cho bạn RegEX của javascript: /^0(\d{9,10})/

==> phải bắt đầu bằng số 0, kèm theo đó là 9 hoặc 10 số nữa.

2 Likes
import re

match = re.search(r"0\d{9}", phone_number)

nếu match và phone_number trùng nhau thì ok.

1 Like

Cảm ơn bác!
E hiểu biểu thức như này không biết có đúng không.?
0 = bắt đầu bằng số 0.
\d = chỉ nhận số.
{9} = dãy số phải gồm 9 số.

  • Bác cho em hỏi lại là mình dùng re.match có được không? nếu đc thì dùng ntn? và điểm khác nhau giữa search và match ?
    Cảm ơn bác!!!

Cảm ơn bác vì sự nhiệt tình.em sẽ hỏi bác về jv sau. :slight_smile:

1 Like

Phải thế này (bạn so sánh ví dụ javascript ở trên của mình sẽ thấy nó giống hoàn toàn):

  • 0 : bắt đầu bằng số 0
  • \d : chỉ nhận số
  • \d{9} lập lại \d 9 lần (tức là 9 số)
>>> match = re.match(r'b', 'abc')
>>> print(match)
None
>>> match = re.search(r'b', 'abc')
>>> print(match)
<_sre.SRE_Match object; span=(1, 2), match='b'>

re.match() chỉ tìm ngay đầu chuỗi còn re.search sẽ tìm tất cả vị trí trong chuỗi. Nếu bạn muốn tìm 1 cái gì đó và xem nó có khớp với toàn bộ chuỗi không thì dùng match nhanh hơn, còn nếu muốn xem nó có nằm trong chuỗi hay không thì dùng search.

1 Like
line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

bác cho em hỏi cái chuỗi regx trên có nghĩa là gì ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?