Hướng dẫn python regex extract ip address from string - python regex trích xuất địa chỉ ip từ chuỗi

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Cải thiện bài viết

    Lưu bài viết

    Đọc
     

    Bàn luận  

    • Hãy cho chúng tôi xem cách trích xuất địa chỉ IP từ một tệp bằng Python. & NBSP;
    • Thuật toán: & nbsp; & nbsp;
    • Nhập mô -đun lại cho biểu thức chính quy.
    • Mở tệp bằng hàm Open [].
       
    r'[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}]'
    • Đọc tất cả các dòng trong tập tin và lưu trữ chúng trong một danh sách.
    • Tuyên bố mẫu cho địa chỉ IP. Mẫu regex là: & nbsp; & nbsp;

    Đối với mọi yếu tố của tìm kiếm danh sách cho mẫu bằng hàm search [], hãy lưu trữ địa chỉ IP trong danh sách.
     

    test.txt

    python3

    Hiển thị danh sách chứa địa chỉ IP.

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    3
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    4
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    5
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    6
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    7

    Tệp được xử lý là Test.txt: & nbsp; & nbsp;

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    1
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    2

    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    9
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    1

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    8
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    9
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    1

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    8
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    7
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    8
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    9

    ['165.91.15.131']
    
    0
    ['165.91.15.131']
    
    1

    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    2
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    4
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    5
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    6
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    7
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    8

    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    2
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    3
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    4
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    5valid IP addresses.

    Đầu ra:

    • Chương trình Python ở trên hiển thị bất kỳ loại địa chỉ IP nào có trong tệp. Chúng tôi cũng có thể hiển thị các địa chỉ IP hợp lệ.
    • Quy tắc cho một địa chỉ IP hợp lệ: & nbsp;

    Các số phải nằm trong phạm vi 0-255
     

    Nó nên bao gồm 4 ô được phân tách bằng ‘.

    Biểu thức chính quy cho các địa chỉ IP hợp lệ là: & nbsp;

    [[25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?] \.] {3} [25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?]

    • Giải thích về biểu thức chính quy được sử dụng cho IP hợp lệ:
    • Vì chúng tôi không thể sử dụng phạm vi 0-255 trong biểu thức chính quy, chúng tôi chia giống nhau thành 3 nhóm:
    • 25 [0-5]-biểu thị số từ 250 đến 255

    2 [0-4] [0-9]-đại diện cho số từ 200 đến 249
     

    test2.txt 

    python3

    Hiển thị danh sách chứa địa chỉ IP.

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    3
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    4
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    5
    ['165.91.15.131']
    
    7
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    7

    Tệp được xử lý là Test.txt: & nbsp; & nbsp;

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    1
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    2

    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    8

    re.findall[r'\b25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\b',s]
    
    9
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    1

    ['165', '91', '15', '131']
    
    2
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    1

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    8
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    9
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    1

    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    2
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    4
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    5
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    6
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    7
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    8

    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    2
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    3
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    4
    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    
    5

    Đầu ra:

    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    0
    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    1

    ['165', '91', '15', '131']
    
    9
    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    3
    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    4

    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    0
    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    6

    ['165.91.15.131']
    
    0
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    5
    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    
    9
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    8

    ['165.91.15.131']
    
    0
     s = "Current IP CheckCurrent IP Address: 165.91.15.131"
     info = re.findall[r'[\d.-]+', s]
    
    2

    ['165.91.15.131']
    
    0
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    5
     s = "Current IP CheckCurrent IP Address: 165.91.15.131"
     info = re.findall[r'[\d.-]+', s]
    
    5
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    8

    ['165.91.15.131']
    
    0
     s = "Current IP CheckCurrent IP Address: 165.91.15.131"
     info = re.findall[r'[\d.-]+', s]
    
    8

    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    2
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    0
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    4
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    5
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    6
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    7
    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    
    8


    Tôi muốn trích xuất một địa chỉ IP từ một chuỗi [thực ra là HTML một dòng] bằng Python.

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    

    - '165.91.15.131' là những gì tôi muốn!

    Tôi đã thử sử dụng các biểu thức thông thường, nhưng cho đến nay tôi chỉ có thể đến số đầu tiên.

    >>> import re
    >>> ip = re.findall[ r'[[0-9]+][?:\.[0-9]+]{3}', s ]
    >>> ip
    ['165']
    

    Nhưng tôi không nắm bắt được biểu hiện reg; Mã trên đã được tìm thấy và sửa đổi từ nơi khác trên web.

    Tylerh

    20.3k60 Huy hiệu vàng74 Huy hiệu bạc94 Huy hiệu đồng60 gold badges74 silver badges94 bronze badges

    Khi được hỏi ngày 23 tháng 5 năm 2010 lúc 6:57May 23, 2010 at 6:57

    1

    Xóa nhóm bắt giữ của bạn:

    ip = re.findall[ r'[0-9]+[?:\.[0-9]+]{3}', s ]
    

    Result:

    ['165.91.15.131']
    

    Notes:

    • Nếu bạn đang phân tích cú pháp HTML, đó có thể là một ý tưởng tốt để xem đẹp.
    • Biểu thức chính quy của bạn phù hợp với một số địa chỉ IP không hợp lệ như
       s = "Current IP CheckCurrent IP Address: 165.91.15.131"
       info = re.findall[r'[\d.-]+', s]
      
      9. Đây không nhất thiết là một vấn đề, nhưng bạn nên biết về nó và có thể xử lý tình huống này. Bạn có thể thay đổi
      >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
      
      00 thành
      >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
      
      01 để sửa chữa một phần mà không làm cho biểu thức thông thường quá phức tạp.

    Đã trả lời ngày 23 tháng 5 năm 2010 lúc 7:02May 23, 2010 at 7:02

    Mark Byersmark ByersMark Byers

    787K188 Huy hiệu vàng1553 Huy hiệu bạc1440 Huy hiệu đồng188 gold badges1553 silver badges1440 bronze badges

    3

    Bạn có thể sử dụng Regex sau để chỉ chụp địa chỉ IP hợp lệ

    re.findall[r'\b25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\b',s]
    

    trả lại

    ['165', '91', '15', '131']
    

    Đã trả lời ngày 23 tháng 5 năm 2010 lúc 7:11May 23, 2010 at 7:11

    SnehalsnehalSnehal

    6,9662 Huy hiệu vàng31 Huy hiệu bạc40 Huy hiệu đồng2 gold badges31 silver badges40 bronze badges

    1

    import re
    
    ipPattern = re.compile['\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}']
    
    findIP = re.findall[ipPattern,s]
    
    findIP contains ['165.91.15.131']
    

    JDOTJDOT

    15.6K12 Huy hiệu vàng63 Huy hiệu bạc116 Huy hiệu đồng12 gold badges63 silver badges116 bronze badges

    Đã trả lời ngày 7 tháng 1 năm 2013 lúc 5:24Jan 7, 2013 at 5:24

    Rambo7Rambo7Rambo7

    1.13510 Huy hiệu bạc17 Huy hiệu đồng10 silver badges17 bronze badges

    Bạn có thể sử dụng Regex sau để trích xuất IP hợp lệ mà không có lỗi sau 1. Một số đã phát hiện

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    02 vì IP hợp lệ 2. Một số không phát hiện
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    03 vì IP hợp lệ 3. Một số không phát hiện IP bắt đầu bằng 0 như
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    04
    1.Some detected
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    02 as valid IP
    2.Some don't detect
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    03 as valid IP
    3.Some don't detect IP that start with zero like
    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    04

    Vì vậy, ở đây tôi đăng một regex hoạt động trên tất cả các điều kiện trên.

    Lưu ý: Tôi đã trích xuất hơn 2 triệu IP mà không gặp vấn đề gì với Regex sau.

    [?:[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]\.]{3}[?:1\d\d|2[0-5][0-5]|2[0-4]\d|0?[1-9]\d|0?0?\d]
    

    Đã trả lời ngày 13 tháng 3 năm 2018 lúc 8:11Mar 13, 2018 at 8:11

    Mohsen Sarkarmohsen SarkarMohsen Sarkar

    5.8007 Huy hiệu vàng46 Huy hiệu bạc86 Huy hiệu Đồng7 gold badges46 silver badges86 bronze badges

    2

    Cách dễ nhất để tìm địa chỉ IP từ nhật ký ..

     s = "Current IP CheckCurrent IP Address: 165.91.15.131"
     info = re.findall[r'[\d.-]+', s]
    

    Trong [42]: thông tin

    Ra [42]: ['165.91.15.131']

    Đã trả lời ngày 17 tháng 8 năm 2015 lúc 3:54Aug 17, 2015 at 3:54

    2

    Đây là cách tôi đã làm nó. Tôi nghĩ nó rất sạch sẽ

    >>> s = "Current IP CheckCurrent IP Address: 165.91.15.131"
    
    0

    get_ip [] trả về IP thành một chuỗi hoặc không có

    Bạn có thể thay thế Địa chỉ_REGEXP cho các biểu thức thông thường khác nếu bạn thích phân tích cú pháp chính xác hơn hoặc có thể thay đổi nhà cung cấp dịch vụ web.

    Đã trả lời ngày 21 tháng 1 năm 2013 lúc 19:23Jan 21, 2013 at 19:23

    Gonzalo Caogonzalo CaoGonzalo Cao

    2.1661 Huy hiệu vàng21 Huy hiệu bạc17 Huy hiệu đồng1 gold badge21 silver badges17 bronze badges

    Bài Viết Liên Quan

    Chủ Đề