Tham khảo - Regex này có nghĩa là gì?
Cái này là cái gì?
Đây là tập hợp các câu hỏi và đáp thông thường. Đây cũng là một Wiki cộng đồng, vì vậy mọi người được mời tham gia duy trì nó.
Tại sao thế này?
regex đang phải trả cho tôi loại câu hỏi mã ze và câu trả lời nghèo nàn mà không có lời giải thích. Tham chiếu này nhằm cung cấp các liên kết đến Q&A chất lượng.
Phạm vi là gì?
Tham chiếu này dành cho các ngôn ngữ sau: php , perl , javascript , python , ruby , java , .net .
Điều này có thể quá rộng, nhưng những ngôn ngữ này chia sẻ cùng một cú pháp. Đối với các tính năng cụ thể, có thẻ của ngôn ngữ đằng sau nó, ví dụ:
- Nhóm Cân bằng biểu thức chính quy là gì? .mạng lưới
Trả lời
Câu hỏi thường gặp về Cụm từ Thông dụng Tràn ngăn xếp
Xem thêm nhiều gợi ý chung và các liên kết hữu ích tại trang chi tiết thẻ regex .
Hướng dẫn trực tuyến
Bộ định lượng
- Zero-hay-hơn:
*
: tham lam ,*?
: miễn cưỡng ,*+
: sở hữu - One-hay-hơn:
+
: tham lam ,+?
: miễn cưỡng ,++
: sở hữu ?
: tùy chọn (không hoặc một)- Min / dãy tối đa (bao gồm tất cả):
{n,m}
: giữa n & m ,{n,}
: n-hay-hơn ,{n}
: chính xác n - Sự khác biệt giữa tham lam, miễn cưỡng (hay còn gọi là "lười biếng", "vô duyên") và định lượng sở hữu:
- Greedy vs. Reluctant vs. Possessive Quantifier
- Thảo luận chuyên sâu về sự khác biệt giữa tham lam và không tham lam
- Sự khác biệt giữa
{n}
và{n}?
- Ai đó có thể giải thích Số lượng Sở hữu cho tôi không? php , perl , java , ruby
- Mô phỏng các bộ định lượng sở hữu .net
- Tham chiếu Non-Stack Overflow: Từ Oracle , regular-expressions.info
Các lớp nhân vật
- Sự khác nhau giữa dấu ngoặc vuông và dấu ngoặc đơn là gì?
[...]
: bất kỳ một ký tự nào[^...]
,: phủ định / bất kỳ ký tự nào nhưng[^]
khớp với bất kỳ ký tự nào kể cả dòng mới javascript[\w-[\d]]
/[a-z-[qz]]
: đặt phép trừ .net , xml-schema , xpath , JGSoft[\w&&[^\d]]
: đặt giao điểm java , ruby 1.9+[[:alpha:]]
: Các lớp ký tự POSIX- Tại sao
[^\\D2]
,[^[^0-9]2]
,[^2[^0-9]]
có được kết quả khác nhau trong Java? java - Tốc ký:
- Chữ số:
\d
: chữ số ,\D
: phi chữ số - Lời nhân vật (Letter, chữ số, dấu gạch dưới):
\w
: nhân vật từ ,\W
: nhân vật không lời - Khoảng trắng:
\s
: khoảng trắng ,\S
: không khoảng trắng
- Chữ số:
- Danh mục Unicode (
\p{L}, \P{L}
, v.v.)
Trình tự thoát
- Khoảng trắng ngang:
\h
: không gian hoặc tab ,\t
: Tab - Dòng mới:
- Các chuỗi khoảng trắng được phân cấp:: Ký tự khoảng trắng
\H
không theo chiều ngang\V
\N
,: Ký tự khoảng trắng không theo chiều dọc ,: Ký tự không phải của nguồn cấp dữ liệu dòng pcre php5 java-8 - Khác:
\v
: Tab dọc ,\e
: các ký tự thoát
Mỏ neo
^
: đầu dòng / input ,\b
: ranh giới từ, và\B
: ranh giới phi-word ,$
: cuối dòng / input\A
: start of input,:\Z
end of input php , perl , ruby\z
: rất cuối đầu vào (\Z
bằng Python) .net , php , PCRE , java , ruby , ICU , nhanh chóng , Objective-C\G
: bắt đầu trận đấu php , perl , ruby
(Cũng xem "Thông tin về hương vị cụ thể → Java → Các chức năng trong Matcher
")
Các nhóm
(...)
: nhóm chụp ,(?:)
: nhóm không chụp\1
: backreference và capture-group reference$1
,: capture group tham chiếu- Subpattern
(?i:regex)
nghĩa là gì? - Chữ 'P'
(?P<group_name>regexp)
có nghĩa là gì? (?>)
: nhóm nguyên tử hay nhóm độc lập ,(?|)
: reset chi nhánh- Các nhóm bắt được đặt tên:
- Tham chiếu nhóm chụp có tên chung tại
regular-expressions.info
- java :
(?<groupname>regex)
: Tổng quan và quy tắc đặt tên (liên kết Non-Stack Overflow) - Ngôn ngữ khác: trăn , .net , perl , và php
(?P<groupname>regex)
(?<groupname>regex)
(?<groupname>regex)
(?P<groupname>regex)
(?<groupname>regex)
- Tham chiếu nhóm chụp có tên chung tại
Nhìn xung quanh
- Lookaheads:
(?=...)
: tích cực ,(?!...)
: tiêu cực - Lookbehinds:
(?<=...)
: tích cực ,(?<!...)
: tiêu cực (không được hỗ trợ bởi javascript ) - Giới hạn nhìn sau:
- Các lựa chọn thay thế phía sau:
Bổ ngữ
- Hầu hết các hương vị:
g
: toàn cầu ,i
: case-insensitive ,u
: unicode ,x
: khoảng trắng mở rộng c
: vị trí hiện tại perle
: biểu thức php perlo
: một lần rubym
: multiline php perl python javascript .net java ,m
: (không) multiline rubys
: một dòng (không được hỗ trợ bởi javascript hoặc ruby ), javascripts
giải pháp thay thếS
: học phpU
: vô duyên php r- Làm thế nào để chuyển đổi preg_replace e thành preg_replace_callback?
- Công cụ sửa đổi nội tuyến là gì?
- '? -Mix' trong Biểu thức chính quy Ruby là gì
Khác:
|
: thay đổi luân phiên (OR) điều hành ,.
: bất kỳ ký tự ,[.]
: đen dot nhân vật- Những ký tự đặc biệt nào phải được thoát?
- Động từ Control ( php và perl ):
(*PRUNE)
,(*SKIP)
,(*FAIL)
và(*F)
- chỉ php :
(*BSR_ANYCRLF)
- chỉ php :
- Đệ quy ( php và perl ):
(?R)
,(?0)
và(?1)
,(?-1)
,(?&groupname)
Nhiệm vụ chung
- Nhận một chuỗi giữa hai dấu ngoặc nhọn:
{...}
- Khớp (hoặc thay thế) một mẫu ngoại trừ trong các trường hợp s1, s2, s3 ...
- Làm cách nào để tìm tất cả id video YouTube trong một chuỗi bằng regex?
- Thẩm định:
- Internet: địa chỉ email , URL (máy chủ / cổng: lựa chọn thay thế regex và không phải regex ), mật khẩu
- Numeric: một số , phạm vi tối thiểu-tối đa (chẳng hạn như 1-31) , số điện thoại , ngày tháng
- Phân tích cú pháp HTML với regex: Xem "Thông tin chung> Khi nào không sử dụng Regex"
Regex-Fu nâng cao
- Chuỗi và số:
- Biểu thức chính quy để khớp với một dòng không chứa từ
- Làm thế nào để mẫu PCRE này phát hiện ra các vết thương?
- Khớp các chuỗi có độ dài bằng lũy thừa thứ tư
- Làm thế nào để regex này tìm các số tam giác?
- Làm thế nào để xác định xem một số có phải là số nguyên tố với regex hay không?
- Làm cách nào để so khớp ký tự giữa trong một chuỗi với regex?
- Khác:
- Làm cách nào để đối sánh a ^ nb ^ n với Java regex?
- Khớp các dấu ngoặc lồng nhau
- Đối sánh regex "dọc" trong "hình ảnh" ASCII
- Danh sách các câu hỏi regex được bình chọn cao trên Code Golf
- Làm thế nào để làm cho hai định lượng lặp lại cùng một số lần?
- Một biểu thức chính quy không thể so khớp:
(?!a)a
- Khớp / xóa / thay thế
this
ngoại trừ trong ngữ cảnh A, B và C - So khớp các dấu ngoặc lồng nhau với regex mà không sử dụng đệ quy hoặc nhóm cân bằng?
Thông tin cụ thể về hương vị
(Ngoại trừ những phần được đánh dấu bằng *
, phần này chứa các liên kết không phải Stack Overflow.)
- Java
- Tài liệu chính thức: Pattern Javadoc , hướng dẫn về biểu thức chính quy của Oracle
- Sự khác biệt giữa các chức năng trong
java.util.regex.Matcher
:matches()
): Kết quả phù hợp phải được neo vào cả đầu vào-bắt đầu và-kết thúcfind()
): Kết quả phù hợp có thể ở bất kỳ đâu trong chuỗi đầu vào (chuỗi con)lookingAt()
: Trận đấu phải được cố định để chỉ đầu vào-bắt đầu- (Đối với neo nói chung, hãy xem phần "Neo")
- Các chỉ
java.lang.String
chức năng mà chấp nhận biểu thức thông thường:matches(s)
,replaceAll(s,s)
,replaceFirst(s,s)
,split(s)
,split(s,i)
- * Một cuộc thảo luận (có ý kiến và) chi tiết về những nhược điểm và thiếu các tính năng trong
java.util.regex
- .MẠNG LƯỚI
- Tài liệu chính thức:
- Boost regex engine: Cú pháp chung , cú pháp Perl (được sử dụng bởi TextPad, Sublime Text, UltraEdit, ... ???)
- Thông tin chung về JavaScript 1.5 và đối tượng RegExp
- .NET
- PHP: cú pháp mẫu ,
preg_match
- Python: Các phép toán biểu thức chính quy ,
search
vsmatch
, how-to - Splunk: thuật ngữ và cú pháp regex và lệnh regex
- Tcl: cú pháp regex , manpage ,
regexp
lệnh - Tìm và thay thế Visual Studio
Thông tin chung
(Các liên kết được đánh dấu bằng *
là các liên kết không phải Stack Overflow.)
- Các nguồn tài liệu tổng hợp khác: Học biểu thức chính quy , * Regular-expressions.info , * mục nhập Wikipedia , * RexEgg , Dự án thư mục mở
- DFA so với NFA
- Tạo chuỗi khớp với regex
- Sách: Jeffrey Friedl's Mastering Regular Expressions
- Khi nào không sử dụng biểu thức chính quy:
- Một số người, khi đối mặt với một vấn đề, nghĩ rằng "Tôi biết, tôi sẽ sử dụng cụm từ thông dụng." Bây giờ họ có hai vấn đề. (bài blog được viết bởingười sáng lậpcủa Stack Overflow ) *
- Không sử dụng regex để phân tích cú pháp HTML:
- Đừng .
- Chà, có lẽ ... nếu bạn thực sự quyết tâm (các câu trả lời khác trong câu hỏi này cũng tốt)
- Đừng .
Ví dụ về regex có thể khiến công cụ regex bị lỗi
Công cụ: Người kiểm tra và Người giải thích
(Phần này chứa các liên kết không phải Stack Overflow.)
Trực tuyến (* bao gồm trình kiểm tra thay thế, + bao gồm trình kiểm tra phân tách) :
- Debuggex (Cũng có một kho lưu trữ các regex hữu ích) javascript , python , pcre
- * Biểu thức chính quy 101 php , pcre , python , javascript
- Regex Pal , javascript thường- expressions.info
- Rubular ruby
- * + regexstorm.net .net
- * RegexPlanet: Java java , Go go , Haskell haskell , JavaScript javascript , .NET dotnet , Perl perl php PCRE php , Python python , Ruby ruby , XRegExp xregexp
freeformatter.com
xregexp- * + php PCRE và POSIX, javascript
regex.larsolavtorvik.com
- Refiddle javascript ruby .net
Ngoại tuyến:
- Microsoft Windows: RegexBuddy (phân tích), RegexMagic (tạo), Expresso (phân tích, tạo, miễn phí)