From Wikipedia, the free encyclopedia Từ Wikipedia tiếng Việt


[ edit ] Syntax [Sửa] Syntax



tải về 308.69 Kb.
trang5/6
Chuyển đổi dữ liệu07.06.2018
Kích308.69 Kb.
#39586
1   2   3   4   5   6

[ edit ] Syntax [Sửa] Syntax

[ edit ] POSIX [Sửa] posix

[ edit ] POSIX Basic Regular Expressions [Sửa] posix cơ bản thường xuyên Expressions


Traditional Unix regular expression syntax followed common conventions but often differed from tool to tool. Truyền thống UNIX biểu hiện thường xuyên theo cú pháp phổ biến ước nhưng thường differed từ công cụ để công cụ. The IEEE POSIX Basic Regular Expressions (BRE) standard (released alongside an alternative flavor called Extended Regular Expressions or ERE) was designed mostly for backward compatibility with the traditional (Simple Regular Expression) syntax but provided a common standard which has since been adopted as the default syntax of many Unix regular expression tools, though there is often some variation or additional features. The IEEE posix cơ bản thường xuyên Expressions (BRE) đạt tiêu chuẩn (phát hành cùng với một thay thế hương vị gọi là mở rộng thường xuyên hay Expressions ere) đã được thiết kế cho hầu hết là quay trở lại tương thích với truyền thống (đơn giản Regular Expression) cung cấp một cú pháp nhưng phổ biến tiêu chuẩn đã kể từ đó đã được áp dụng như là cú pháp mặc định của nhiều công cụ Unix biểu hiện thường xuyên, mặc dù có một số biến đổi thường xuyên hoặc bổ sung các tính năng. Many such tools also provide support for ERE syntax with command line arguments . Nhiều như vậy cũng cung cấp các công cụ hỗ trợ cho các ere với cú pháp đối số dòng lệnh.

In the BRE syntax, most characters are treated as literals — they match only themselves (ie, a matches " a "). Trong BRE cú pháp, hầu hết các ký tự được đối xử như literals - họ chỉ phù hợp với mình (ví dụ, a kết quả phù hợp "một"). The exceptions, listed below, are called metacharacters or metasequences. Các trường hợp ngoại lệ, liệt kê dưới đây, được gọi là metacharacters hay metasequences.

.

Matches any single character (many applications exclude newlines, and exactly which characters are considered newlines is flavor, character encoding, and platform specific, but it is safe to assume that the line feed character is included). Phù hợp với bất kỳ một ký tự (nhiều ứng dụng loại trừ newlines, và đó chính xác các ký tự được coi là newlines là hương vị, bảng mã ký tự, và nền tảng cụ thể, nhưng nó là an toàn cho rằng các dòng nguồn cấp dữ liệu được bao gồm ký tự). Within POSIX bracket expressions, the dot character matches a literal dot. Trong vòng posix bracket biểu thức, các ký tự dot phù hợp với một nét chữ. For example, ac matches " abc ", etc., but [ac] matches only " a ", " . ", or " c ". Ví dụ, ac kết quả phù hợp "abc", vv, nhưng [ac] chỉ phù hợp với "a", ".", Hay "c".

[ ]

A bracket expression. A bracket biểu hiện. Matches a single character that is contained within the brackets. Phù hợp với một ký tự được chứa trong dấu ngoặc đơn. For example, [abc] matches " a ", " b ", or " c ". [az] specifies a range which matches any lowercase letter from " a " to " z ". Ví dụ, [abc] đối xứng "là một", "b", hay "c". [az] xác định một phạm vi nào phù hợp với bất kỳ từ chữ thường chữ "a" để "z". These forms can be mixed: [abcx-z] matches " a ", " b ", " c ", " x ", " y ", or " z ", as does [a-cx-z] . Những hình thức có thể được pha [abcx-z] đối xứng "là một", "b", "c", "x", "y", hay "z", như không có gì [a-cx-z]

The - character is treated as a literal character if it is the last or the first character within the brackets, or if it is escaped with a backslash: [abc-] , [-abc] , or [a\-bc] . - - ký tự được đối xử như một chữ ký tự nếu nó là tác phẩm mới hoặc là người đầu tiên trong vòng ký tự có dấu ngoặc, hay nếu nó là thoát khỏi với một [abc-] [a\-bc]

[^ ]

Matches a single character that is not contained within the brackets. Phù hợp với một ký tự không được chứa trong dấu ngoặc đơn. For example, [^abc] matches any character other than " a ", " b ", or " c ". [^az] matches any single character that is not a lowercase letter from " a " to " z ". Ví dụ, [^abc] phù hợp với bất kỳ ký tự khác hơn "một", "b", hay "c". [^az] phù hợp với bất kỳ một ký tự mà không phải là một từ chữ thường chữ "a" để "z". As above, literal characters and ranges can be mixed. Như ở trên, chữ ký tự và phạm vi có thể được pha trộn.

^

Matches the starting position within the string. Kết quả các trận đấu bắt đầu các vị trí trong chuỗi. In line-based tools, it matches the starting position of any line. Trong dòng dựa trên các công cụ, nó khớp với vị trí bắt đầu của bất kỳ dòng.

$

Matches the ending position of the string or the position just before a string-ending newline. Phù hợp với các vị trí kết thúc của chuỗi hoặc các vị trí chỉ cần trước khi kết thúc một chuỗi-newline. In line-based tools, it matches the ending position of any line. Trong dòng dựa trên các công cụ, nó khớp với kết thúc vị trí của bất kỳ dòng.

\( \)

Defines a marked subexpression. Định nghĩa đánh dấu một subexpression. The string matched within the parentheses can be recalled later (see the next entry, \ n ). Chuỗi phù hợp trong ngoặc có thể được nhớ lại sau (xem mục nhập kế tiếp, \ n A marked subexpression is also called a block or capturing group. Một dấu subexpression còn được gọi là một khối hoặc capturing nhóm.

\ n

Matches what the n th marked subexpression matched, where n is a digit from 1 to 9. Phù hợp với những gì n th đánh dấu subexpression phù hợp, nơi mà n là một chữ số từ 1 đến 9. This construct is theoretically irregular and was not adopted in the POSIX ERE syntax. Điều này được xây dựng theo lý thuyết irregular và đã không được áp dụng trong posix ere cú pháp. Some tools allow referencing more than nine capturing groups. Một số công cụ cho phép tham chiếu nhiều hơn chín capturing nhóm.

*

Matches the preceding element zero or more times. Phù hợp với các yếu tố trước không hay nhiều lần. For example, ab*c matches " ac ", " abc ", " abbbc ", etc. [xyz]* matches "", " x ", " y ", " z ", " zx ", " zyx ", " xyzzy ", and so on. \(ab\)* matches "", " ab ", " abab ", " ababab ", and so on. Ví dụ, ab*c đối xứng "ac", "abc", "abbbc", vv [xyz]* đối xứng "", "x", "y", "z", "zx", "zyx", " xyzzy ", và so on. \(ab\)* đối xứng" "," ab "," abab "," ababab ", và so on.

\{ m , n \}

Matches the preceding element at least m and not more than n times. Phù hợp với các yếu tố trước ít nhất m và không nhiều hơn n lần. For example, a\{3,5\} matches only " aaa ", " aaaa ", and " aaaaa ". a\{3,5\} dụ, một a\{3,5\} đối xứng chỉ "aaa", "aaaa","aaaaa". This is not found in a few, older instances of regular expressions. Điều này là không được tìm thấy trong một vài, các trường cũ, biểu thức thông thường.

Examples: Ví dụ:

  • .at matches any three-character string ending with "at", including " hat ", " cat ", and " bat ". .at phù hợp với bất kỳ ba-chuỗi ký tự kết thúc bằng "tại", bao gồm cả "hat", "cat","bat".

  • [hc]at matches " hat " and " cat ". [hc]at đối xứng "hat""cat".

  • [^b]at matches all strings matched by .at except " bat ". [^b]at phù hợp với tất cả những dây phù hợp .at ngoại trừ "bat".

  • ^[hc]at matches " hat " and " cat ", but only at the beginning of the string or line. ^[hc]at đối xứng "hat""cat", nhưng chỉ tại đầu của chuỗi hoặc dòng.

  • [hc]at$ matches " hat " and " cat ", but only at the end of the string or line. [hc]at$ đối xứng "hat""cat", nhưng chỉ ở kết thúc của chuỗi hoặc dòng.

[ edit ] POSIX Extended Regular Expressions [Sửa] posix mở rộng thường xuyên Expressions


The meaning of metacharacters escaped with a backslash is reversed for some characters in the POSIX Extended Regular Expression (ERE) syntax. Ý nghĩa của metacharacters thoát khỏi với một backslash là lại cho một số ký tự trong posix mở rộng Regular Expression (ere) cú pháp. With this syntax, a backslash causes the metacharacter to be treated as a literal character. Với cú pháp này, là một nguyên nhân backslash các metacharacter để được đối xử như một chữ ký tự. Additionally, support is removed for \ n backreferences [ citation needed ] and the following metacharacters are added: Ngoài ra, bị loại bỏ hỗ trợ cho \ n backreferences [citation cần thiết] và sau đây là metacharacters cập nhật:

?

Matches the preceding element zero or one time. Phù hợp với các yếu tố trước không hay một thời gian. For example, ba? matches " b " or " ba ". Ví dụ, ba? Đối xứng "b" hoặc "ba".

+

Matches the preceding element one or more times. Phù hợp với các yếu tố trước một hoặc nhiều lần. For example, ba+ matches " ba ", " baa ", " baaa ", and so on. Ví dụ, ba+ đối xứng "ba", "baa", "baaa", và so on.

|

The choice (aka alternation or set union) operator matches either the expression before or the expression after the operator. Sự lựa chọn (aka đổi, hoặc thiết lập tổ chức công đoàn) đối xứng hoặc nhà điều hành các biểu hiện trước khi hoặc các biểu hiện sau khi các nhà điều hành. For example, abc|def matches " abc " or " def ". Ví dụ, abc|def đối xứng "abc" hoặc "def".

Examples: Ví dụ:

  • [hc]+at matches " hat ", " cat ", " hhat ", " chat ", " hcat ", " ccchat ", and so on, but not " at ". [hc]+at đối xứng "hat", "cat", "hhat", "trò chuyện", "hcat", "ccchat", và như vậy, nhưng không phải "tại".

  • [hc]?at matches " hat ", " cat ", and " at ". [hc]?at đối xứng "hat", "cat","tại".

  • cat|dog matches " cat " or " dog ". cat|dog đối xứng "cat" hoặc "dog".

POSIX Extended Regular Expressions can often be used with modern Unix utilities by including the command line flag -E . Posix mở rộng thường xuyên Expressions thường có thể được sử dụng, hiện đại, có tiện ích UNIX do bao gồm cả các dòng lệnh E-cờ.

[ edit ] POSIX character classes [Sửa] posix ký tự các lớp học


Since many ranges of characters depend on the chosen locale setting (ie, in some settings letters are organized as abc...zABC...Z , while in some others as aAbBcC...zZ ), the POSIX standard defines some classes or categories of characters as shown in the following table: Kể từ nhiều phạm vi của các ký tự phụ thuộc vào các địa phương đã chọn cài đặt (ví dụ, trong một số chữ cái cài đặt được tổ chức như abc ... zABC ... Z, trong khi ở một số người khác như aAbBcC ... zZ), posix các tiêu chuẩn xác định một số lớp học hoặc chuyên mục của ký tự như được hiển thị trong bảng sau:

POSIX Posix

Perl

ASCII

Description Mô tả

[:alnum:]




[A-Za-z0-9]

Alphanumeric characters Ký tự

[:word:]

\w

[A-Za-z0-9_]

Alphanumeric characters plus "_" Cộng với ký tự "_"




\W

[^\w]

non-word character chữ ký tự không -

[:alpha:]




[A-Za-z]

Alphabetic characters Alphabetic ký tự

[:blank:]




[ \t]

Space and tab Không gian và thẻ

[:cntrl:]




[\x00-\x1F\x7F]

Control characters Kiểm soát ký tự

[:digit:]

\d

[0-9]

Digits Chữ số




\D

[^\d]

non-digit không chữ số

[:graph:]




[\x21-\x7E]

Visible characters Nhìn ký tự

[:lower:]




[az]

Lowercase letters Chữ thường chữ cái

[:print:]




[\x20-\x7E]

Visible characters and spaces Nhìn ký tự và không gian

[:punct:]




[-!"#$%&'()*+,./:;<=>?@[\\\]_`{|}~]

Punctuation characters Ký tự chấm câu

[:space:]

\s

[ \t\r\n\v\f]

Whitespace characters Trăng ký tự




\S

[^\s]

non-whitespace character không trăng ký tự

[:upper:]




[AZ]

Uppercase letters Chữ hoa, chữ cái

[:xdigit:]




[A-Fa-f0-9]

Hexadecimal digits Chữ số thập lục

POSIX character classes can only be used within bracket expressions. Posix ký tự các lớp học chỉ có thể được sử dụng trong vòng bracket expressions. For example, [[:upper:]ab] matches the uppercase letters and lowercase " a " and " b ". Ví dụ, [[:upper:]ab] khớp với chữ hoa, chữ cái và chữ thường "một""b".

In Perl regular expressions, [:print:] matches [:graph:] union [:space:] . Perl trong các biểu thức bình thường, [:print:] đối xứng [:graph:] công đoàn [:space:] An additional non-POSIX class understood by some tools is [:word:] , which is usually defined as [:alnum:] plus underscore. Thêm một lớp học posix không hiểu là do một số công cụ [:word:] mà thường được định nghĩa là [:alnum:] underscore. This reflects the fact that in many programming languages these are the characters that may be used in identifiers. Điều này phản ánh một thực tế là trong nhiều ngôn ngữ lập trình này có các ký tự mà có thể được sử dụng trong định danh. The editor Vim further distinguishes word and word-head classes (using the notation \w and \h ) since in many programming languages the characters that can begin an identifier are not the same as those that can occur in other positions. Trình biên tập Vim thêm phân biệt từtừ-đầu lớp (bằng cách sử dụng các chú \w và \h từ trong nhiều ngôn ngữ lập trình các ký tự mà có thể bắt đầu một định danh không giống như những người có thể xảy ra ở các vị trí khác.

Note that what the POSIX regular expression standards call character classes are commonly referred to as POSIX character classes in other regular expression flavors which support them. Lưu ý rằng những gì posix thường xuyên ký tự biểu hiện tiêu chuẩn gọi là các lớp học thường được gọi tắt là posix ký tự lớp học trong các biểu hiện mùi vị thường xuyên có hỗ trợ cho họ. With most other regular expression flavors, the term character class is used to describe what POSIX calls bracket expressions . Với hầu hết các biểu hiện mùi vị khác thường xuyên, các lớp học hạn ký tự được sử dụng để mô tả những gì posix bracket biểu hiện cuộc gọi.

[ edit ] Perl-derivative regular expressions [Sửa] Perl-phẩm dựa trên phần mềm các biểu thức bình thường


Perl has a more consistent and richer syntax than the POSIX basic (BRE) and extended (ERE) regular expression standards. Perl có thêm một quán và giàu hơn posix cú pháp cơ bản (BRE) và mở rộng (ere) thường xuyên biểu hiện tiêu chuẩn. An example of its consistency is that \ always escapes a non-alphanumeric character. Một ví dụ của các quán là \ luôn luôn escapes a non-alphanumeric ký tự. Another example of functionality possible with Perl but not POSIX-compliant regular expressions is the concept of lazy quantification (see the next section). Một ví dụ khác của tính năng có thể với Perl-posix nhưng không tuân thủ các biểu thức bình thường là những khái niệm về lười quantification (xem phần kế tiếp).

Due largely to its expressive power, many other utilities and programming languages have adopted syntax similar to Perl's — for example, Java , JavaScript , PCRE , Python , Ruby , Microsoft 's .NET Framework , and the W3C's XML Schema all use regular expression syntax similar to Perl's. Do phần cho các expressive quyền lực, nhiều tiện ích và ngôn ngữ lập trình có cú pháp tương tự áp dụng cho Perl's - ví dụ, Java, JavaScript, PCRE, Python, Ruby, Microsoft 's. NET Framework, và các W3C's XML Schema tất cả các biểu hiện thường xuyên sử dụng cú pháp tương tự với Perl's. Some languages and tools such as PHP support multiple regular expression flavors. Một số ngôn ngữ và các công cụ như PHP hỗ trợ thường xuyên biểu hiện nhiều mùi vị. Perl-derivative regular expression implementations are not identical, and many implement only a subset of Perl's features. Perl-phẩm dựa trên phần mềm thường xuyên biểu hiện đang triển khai không giống nhau, và có nhiều triển khai thực hiện chỉ một nhóm của các tính năng của Perl. With Perl 5.10, this process has come full circle with Perl incorporating syntax extensions originally from Python, PCRE, the .NET Framework, and Java. Với 5,10 Perl, quá trình này đã trở thành vòng tròn đầy đủ với Perl cú pháp mở rộng hợp ban đầu từ Python, PCRE, the. NET Framework, và Java.

[ edit ] Simple Regular Expressions [Sửa] đơn giản thường xuyên Expressions


Simple Regular Expressions is a syntax that may be used by historical versions of application programs, and may be supported within some applications for the purpose of providing backward compatibility, These forms of regular expression syntax are considered to be deprecated [ 3 ] and should not be used. Expressions thường xuyên rất đơn giản là một cú pháp mà có thể được sử dụng bởi lịch sử các phiên bản của các chương trình ứng dụng, và có thể được hỗ trợ trong vòng một số ứng dụng cho các mục đích cung cấp tính tương quay trở lại, Những hình thức thường xuyên được coi là những biểu hiện cú pháp để được deprecated [3] và không nên được sử dụng.

[ edit ] Lazy quantification [Sửa] Lazy quantification


The standard quantifiers in regular expressions are greedy, meaning they match as much as they can, only giving back as necessary to match the remainder of the regex. Tiêu chuẩn lượng trong biểu thức thông thường là tham lam, có nghĩa là họ phù hợp với càng nhiều càng tốt, họ có thể, chỉ cho trở lại như cần thiết để phù hợp với phần còn lại của regex. For example, someone new to regexes wishing to find the first instance of an item between < and > symbols in this example: Ví dụ, một người mới để regexes mong muốn được tìm thấy là người đầu tiên dụ của một mục giữa biểu tượng trong ví dụ này:

Another whale explosion occurred on , <2004>. Một whale nổ xảy ra trên , <2004>.

...would likely come up with the pattern <.*> , or similar. ... có khả năng sẽ trở lên với các mẫu <.*> hoặc tương tự. However, this pattern will actually return " , <2004> " instead of the " " which might be expected, because the * quantifier is greedy — it will consume as many characters as possible from the input, and " January 26>, <2004 " has more characters than " January 26 ". Tuy nhiên, mô hình này sẽ thực sự trở lại ", <2004>" thay vì "" mà có thể mong đợi, bởi vì * quantifier là tham lam - nó sẽ tiêu bao nhiêu ký tự càng tốt từ đầu vào, và "tháng một 26>, <2004" có thêm ký tự hơn "January 26".

Though this problem can be avoided in a number of ways (eg, by specifying the text that is not to be matched: <[^>]*> ), modern regular expression tools allow a quantifier to be specified as lazy (also known as non-greedy , reluctant , minimal , or ungreedy ) by putting a question mark after the quantifier (eg, <.*?> ), or by using a modifier which reverses the greediness of quantifiers (though changing the meaning of the standard quantifiers can be confusing). Mặc dù vấn đề này có thể tránh được trong một số cách (ví dụ, bằng cách xác định văn bản mà không phải là để được phù hợp: <[^>]*> hiện đại biểu hiện thường xuyên các công cụ cho phép một quantifier để được xác định như lười (cũng được biết đến như là không tham lam, không ưa, tối thiểu, hay ungreedy) bằng cách đặt một câu hỏi đánh dấu sau khi quantifier (ví dụ như, <.*?> hoặc bằng cách sử dụng một modifier mà lại tham ăn của các lượng (mặc dù thay đổi ý nghĩa của các tiêu chuẩn lượng có thể bị bối rối). By using a lazy quantifier, the expression tries the minimal match first. Bằng cách sử dụng một lười quantifier, các biểu hiện cố gắng tối thiểu phù hợp với đầu tiên. Though in the previous example lazy matching is used to select one of many matching results, in some cases it can also be used to improve performance when greedy matching would require more backtracking . Mặc dù trong ví dụ trước lười đối sánh được sử dụng để chọn một trong số nhiều phù hợp với kết quả, trong một số trường hợp, nó cũng có thể được sử dụng để cải thiện hiệu suất khi tham lam sẽ phù hợp với yêu cầu thêm backtracking.


tải về 308.69 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương