Hướng dẫn php preg_match parentheses - dấu ngoặc đơn php preg_match
Tôi đang cố gắng viết một regex để khớp với một chuỗi chứa tối đa 2 số và không chứa các dấu hiệu cụ thể như 2 hoặc 3 chẳng hạn:
Thực tế là tôi không thể quản lý để sử dụng 4 kết hợp với 5 trong biểu thức regex: Bây giờ tôi đang cố gắng làm điều gì đó như thế này nhưng nó không hoạt động ...:
Cảm ơn rất nhiều về sự trợ giúp của bạn. ạ
Ben 8.8647 Huy hiệu vàng42 Huy hiệu bạc78 Huy hiệu đồng7 gold badges42 silver badges78 bronze badges Hỏi ngày 16 tháng 12 năm 2015 lúc 11:07Dec 16, 2015 at 11:07
9
Bạn không xa giải pháp. So sánh:
Đã trả lời ngày 3 tháng 11 năm 2017 lúc 15:03Nov 3, 2017 at 15:03
ArmaliarmaliArmali Phim thương hiệu vàng 17K1354 Huy hiệu bạc157 Huy hiệu đồng13 gold badges54 silver badges157 bronze badges 92 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more. Cách tốt nhất/hiệu quả nhất để trích xuất văn bản giữa dấu ngoặc đơn là gì? Nói rằng tôi muốn lấy chuỗi "văn bản" từ chuỗi "Bỏ qua mọi thứ ngoại trừ (văn bản) này" theo cách hiệu quả nhất có thể. Cho đến nay, điều tốt nhất tôi nghĩ ra là:
Có cách nào tốt hơn để làm điều này? Nói chung, tôi biết sử dụng Regex có xu hướng kém hiệu quả hơn, nhưng trừ khi tôi có thể giảm số lượng các cuộc gọi chức năng, có lẽ đây sẽ là cách tiếp cận tốt nhất? Suy nghĩ? Hỏi ngày 13 tháng 10 năm 2008 lúc 2:08Oct 13, 2008 at 2:08Oct 13, 2008 at 2:08 1 Tôi chỉ cần làm một regex và vượt qua nó. Trừ khi bạn đang thực hiện đủ các lần lặp lại rằng nó trở thành một vấn đề hiệu suất rất lớn, nó chỉ dễ dàng hơn để viết mã (và hiểu khi bạn nhìn lại nó)
Đã trả lời ngày 13 tháng 10 năm 2008 lúc 2:16Oct 13, 2008 at 2:16Oct 13, 2008 at 2:16 OwenowenOwenOwen Huy hiệu vàng 81K2121 gold badges117 silver badges113 bronze badges21 gold badges117 silver badges113 bronze badges 7 Vì vậy, thực tế, mã bạn đã đăng không hoạt động: Các tham số 4 là $ chuỗi, $ start và $ length và các tham số 5 là 6, 7. Sửa đổi một chút:$length, and 5 parameters are 6, 7. Slightly modified: 3$length, and 5 parameters are 6, 7. Slightly modified: 3Một số sự tinh tế: Tôi đã sử dụng 8 trong tham số bù để giúp PHP trong khi thực hiện tìm kiếm 9 trên dấu ngoặc đơn thứ hai; Chúng tôi tăng 30 một và giảm 31 để loại trừ dấu ngoặc đơn khỏi trận đấu.Ngoài ra, không có kiểm tra lỗi nào trong mã này: bạn sẽ muốn đảm bảo 30 và 33 không === Sai trước khi thực hiện 34.Đối với việc sử dụng 35 so với Regex; Hiệu suất khôn ngoan, mã này sẽ đánh bại một biểu thức thông thường. Đó là một chút Wordier mặc dù. Tôi ăn và thở 35, vì vậy tôi không bận tâm đến điều này quá nhiều, nhưng người khác có thể thích sự nhỏ gọn của một regex.Một j 3,85014 Huy hiệu vàng38 Huy hiệu bạc52 Huy hiệu đồng14 gold badges38 silver badges52 bronze badges14 gold badges38 silver badges52 bronze badges Đã trả lời ngày 13 tháng 10 năm 2008 lúc 2:18Oct 13, 2008 at 2:18Oct 13, 2008 at 2:18 Edward Z. Yangedward Z. YangEdward Z. YangEdward Z. Yang 26K16 Huy hiệu vàng79 Huy hiệu bạc108 Huy hiệu đồng16 gold badges79 silver badges108 bronze badges16 gold badges79 silver badges108 bronze badges 1 Sử dụng một biểu thức thông thường: 3Đã trả lời ngày 13 tháng 10 năm 2008 lúc 3:34Oct 13, 2008 at 3:34Oct 13, 2008 at 3:34 RobrobRobRob 47.6K5 Huy hiệu vàng72 Huy hiệu bạc91 Huy hiệu Đồng5 gold badges72 silver badges91 bronze badges5 gold badges72 silver badges91 bronze badges Tôi nghĩ rằng đây là cách nhanh nhất để có được các từ giữa dấu ngoặc đơn đầu tiên trong một chuỗi. 4Đã trả lời ngày 10 tháng 4 năm 2020 lúc 4:34Apr 10, 2020 at 4:34Apr 10, 2020 at 4:34 rüff0rüff0rüff0rüff0 8251 Huy hiệu vàng12 Huy hiệu bạc26 Huy hiệu đồng1 gold badge12 silver badges26 bronze badges1 gold badge12 silver badges26 bronze badges Các giải pháp Regex đã được đăng - 37 và 38 - không trả lại các chuỗi trong cùng giữa một dấu ngoặc mở và đóng. Nếu một chuỗi là 39, cả hai đều trả về toàn bộ 30, chứ không phải 31.Mẫu phù hợp với các chất nền (sử dụng với 32 để tìm nạp đầu tiên và 33 để tìm nạp tất cả các lần xuất hiện) trong dấu ngoặc đơn mà không có dấu ngoặc đơn mở và đóng khác ở giữa IS, nếu trận đấu sẽ bao gồm dấu ngoặc đơn: 2Hoặc, bạn muốn nhận được các giá trị mà không có dấu ngoặc đơn: 3Thay thế 34 bằng 35 nếu phải có ít nhất 1 char giữa 36 và 37.Details:::
Phần 47 trong Regex thay thế khớp với 36 và bỏ qua giá trị khớp (với toán tử thiết lập lại đối sánh 49). 20 là một cái nhìn tích cực đòi hỏi 36 phải xuất hiện ngay lập tức ở bên trái của vị trí hiện tại, nhưng 36 không được thêm vào giá trị khớp vì các mẫu tìm kiếm (tìm kiếm) không tiêu thụ. 23 là một cái nhìn tích cực đòi hỏi một char 37 phải xuất hiện ngay lập tức ở bên phải vị trí hiện tại.Mã PHP: 5Output: 6Đã trả lời ngày 13 tháng 5 năm 2019 lúc 14:08May 13, 2019 at 14:08May 13, 2019 at 14:08 Wiktor Stribiżewwiktor StribiżewWiktor StribiżewWiktor Stribiżew 581K34 Huy hiệu vàng400 Huy hiệu bạc503 Huy hiệu Đồng34 gold badges400 silver badges503 bronze badges34 gold badges400 silver badges503 bronze badges Đây là mã mẫu để trích xuất tất cả văn bản giữa '[' và ']' và lưu trữ 2 mảng riêng biệt (tức là văn bản bên trong dấu ngoặc đơn trong một mảng và văn bản bên ngoài dấu ngoặc đơn trong một mảng khác) 7Đầu ra: Trích xuất_Text ("Xin chào bạn thế nào?"); sẽ sản xuất: 0Trích xuất_Text ("Xin chào [http://www.google.com/test.mp3] Bạn có khỏe không?"); sẽ sản xuất 1Đã trả lời ngày 29 tháng 1 năm 2014 lúc 8:22Jan 29, 2014 at 8:22Jan 29, 2014 at 8:22 1 Hàm này có thể hữu ích. 2strpos () => được sử dụng để tìm vị trí của lần xuất hiện đầu tiên trong một chuỗi. strrpos () => được sử dụng để tìm vị trí của lần xuất hiện đầu tiên trong một chuỗi. Đã trả lời ngày 2 tháng 5 năm 2017 lúc 3:46May 2, 2017 at 3:46May 2, 2017 at 3:46 Vijayvijayvijayvijay 3192 Huy hiệu bạc8 Huy hiệu đồng2 silver badges8 bronze badges2 silver badges8 bronze badges 3Đây là một chút cải thiện cho câu trả lời trước đó sẽ trả về tất cả các mẫu ở dạng mảng: GetStringsbeted giữa ('[t] [] là [test] chuỗi [mẫu]') sẽ trả về: Đã trả lời ngày 8 tháng 4 năm 2019 lúc 8:21Apr 8, 2019 at 8:21Apr 8, 2019 at 8:21 |