30/09/2018, 19:38

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!

Khoa Nguyen viết 21:40 ngày 30/09/2018

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.

anon10499953 viết 21:40 ngày 30/09/2018
import re

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

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

vimanh viết 21:40 ngày 30/09/2018

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!!!
vimanh viết 21:42 ngày 30/09/2018

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

Khoa Nguyen viết 21:48 ngày 30/09/2018

0 = bắt đầu bằng số 0.\d = chỉ nhận số.{9} = dãy số phải gồm 9 số.

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ố)
anon10499953 viết 21:42 ngày 30/09/2018
>>> 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.

Đỗ Nhiên viết 21:52 ngày 30/09/2018
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ì ạ

Bài liên quan
0