In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-02-22 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >
Share
Shulou(Shulou.com)06/02 Report--
This article introduces the knowledge of "an introduction to regular expressions". Many people will encounter such a dilemma in the operation of actual cases, so let the editor lead you to learn how to deal with these situations. I hope you can read it carefully and be able to achieve something!
A regular expression is a lookup and string replacement operation. Regular expressions are widely used in text editors, such as regular expressions used to:
Check whether the text contains the specified feature words
Find out the position of matching feature words in the text.
Extract information from text, such as a substring of a string
Modify text
Like text editors, almost all high-level programming languages support regular expressions. In this context, "text" is a string, and the operations that can be performed are similar. Some programming languages, such as Perl,JavaScript, check the syntax of regular expressions.
What is a regular expression?
A regular expression is just a string. There is no length limit, but such regular expressions tend to be shorter in length. Here are some examples of regular expressions:
I had a\ S + day today
[A-Za-z0-9\-_] {3pm 16}
\ d\ d -\ d\ d\ d
V (\ d +) (\.\ d +) *
TotalMessages= (. *?)
These strings are actually microcomputer programs. The syntax of regular expressions is actually a lightweight, concise, domain-specific programming language. With this in mind, it's easy to understand the following:
Each regular expression can be decomposed into a sequence of instructions, such as "first find this character, then find that character, and then find a character from it." no, no, no. "
Every regular expression has input (text) and output (output that matches the rule, sometimes modified text).
Syntax errors may occur in regular expressions-not all strings are regular expressions
Regular expression syntax is very personal and can be said to be scary.
Sometimes regular expressions can be compiled to execute faster
In implementation, regular expressions have other features. This article will focus on the core syntax of regular expressions, which can be seen in almost all regular expressions.
Special hint: regular expressions have nothing to do with file wildcard syntax, such as * .xml
Basic grammatical characters of regular expressions
A regular expression contains a series of characters that can only match themselves. There are some special characters called metacharacters that can match some special rules.
In the example shown below, I marked the metacharacters in red.
I had a\ S + day today
[A-Za-z0-9\-_] {3pm 16}
\ d\ d -\ d\ d\ d
V (\ d +) (\.\ d +) *
TotalMessages= (. *?)
Most characters, including all alphabetic and numeric characters, are ordinary characters. That is, they can only match themselves, such as the regular expression shown below:
Cat
This means that only one string can be matched, starting with "c", followed by the character "a", followed by the character "t".
So far, regular expressions function similar to
Regular Find function
String.indexOf () function in Java
Strpos () function in PHP
Wait
Note: without special instructions, regular expressions are case-sensitive. However, almost all regular expression implementations provide a Flag to control case sensitivity.
Point "."
The first metacharacter we are going to explain is "." This symbol means that any character can be matched. The regular expression is as follows:
C.t
It means matching a string that starts with c, followed by any character, followed by the letter t.
In a piece of text, such regular expressions can be used to find strings like cat, cot, czt, or even combinations like c.t, but not strings like ct or coot.
Use the backslash "\" to ignore metacharacters so that metacharacters function like normal characters. So, regular expressions
C\ .t
It means "find the letter c, then a full stop (."), followed by the letter t. "
The backslash itself is also a metacharacter, which means that the backslash itself can be changed back to the use of ordinary characters in a similar way. Therefore, regular expressions
C\ t
Indicates a string that matches "begins with the character c, followed by a backslash, followed by the letter t".
Be careful! In the implementation of regular expressions,. Cannot be used to match newline characters. The representation of "newline character" varies from implementation to implementation. When actually programming, please refer to the relevant documentation. In this article, I think. Can match any character. The implementation environment usually provides a Flag flag bit to control this.
Character class
A character class is a set of characters in square brackets that indicate that any of these characters can be matched.
The regular expression c [aeiou] t means that the string that can be matched is "begins with c, followed by any character in aeiou, and ends with t". In the practical application of text, such regular expressions can match: cat,cet,cit,cot,cut five strings.
The regular expression [0123456789] means to match any integer.
The regular expression [a] represents the matching single character a.
Contains examples of omitting characters
\ [a\] a
Represents a matching string [a]
[\ []\ ab] indicates that the matching character is "[" or "']" or "a", or "b"
[\]] indicates that the matching character is "\" or "[" or "]".
In character classes, the repetition and occurrence order of characters are not important. [dabaaabcc] is the same as [abc]
Important: the rules in the character class are sometimes different from those outside the character class. Some characters are metacharacters in the character class and ordinary characters outside the character class. Some characters are just the opposite. Some characters are metacharacters in and outside the character class, depending on the situation!
For example, Indicates that it matches any character, and [.] Indicates that it matches a full-width period. It's not the same thing!
The range of character classes
In a character set, you can indicate a range of matching letters or numbers by using dashes.
[bmurf] is the same as [bPermie cpene dpene], both match a character "b" or "c" or "d" or "e" or "f"
[Amurz] is the same as [ABCDEFGHIJKLMNOPQRSTUVWXYZ], which matches any uppercase letter.
[1-9] is the same as [123456789], which matches any non-zero number.
Practice
Using the regular expression knowledge we have explained so far, match the words with the most continuous vowels in the dictionary and find the words with the most continuous consonants.
Answer
Regular expressions such as [aeiou] [aeiou] can match words with six consecutive vowels, such as euouae and euouaes.
Similarly, the scary regular expression [bcdfghjklmnpqrstvwxyz] [bcdfghjklmnpqrstvwxyz] can find the word sulphhydryls with ten consonants in succession.
Below, we will explain how to effectively shorten the length of such regular expressions.
Short dashes have no special meaning outside the character class. The regular expression amurz means that the matching string "begins with a, followed by a dash and ends with z".
Ranges and individual characters may appear at the same time in a character class:
[0-9,] indicates that it matches a number, or a full stop, or a comma
[0-9a-fA-F] means matching a hexadecimal number
[a-zA-Z0-9\ -] means matching a letter, a number, or a dash
Practice
Match the date in YYYY-MM-DD format using the regular expression knowledge that has been introduced.
Answer
[0-9] [0-9] [0-9]-[0-9] [0-9]-[0-9] [0-9].
Similarly, in the following article, we will show how to effectively reduce the length of such regular expressions.
Although you can try to use some non-letters or numbers as the last symbol of the range in regular expressions, such as abc [!-/] def, this is not legal in every implementation. Even if the syntax is legal, the semantics are vague. It's best not to use it like this.
At the same time, you must carefully choose the boundary value of the range. Even if [Amurz] is legal in the implementation you are using, it may produce unpredictable results. (note that there are characters between z and a)
Note: the character values of the range represent only characters, not the range of values. For example, [1-31] means to match a number, which is 1 or 2 or 3, rather than a number with a value between 1 and 31.
Antonym of character class
You can put an antonym at the beginning of the character class.
[^ a] means to match any character that is not "a"
[^ a-zA-Z0-9] means to match any character that is neither a letter nor a number
[\ ^ abc] matches a character that is "^" or an or b or c
[^\ ^] means to match any character that is not "^"
Practice
In the dictionary, find an example that is not satisfied with "I before e, but no c".
Answer
Both cie and [^ c] ei should be able to find many such examples, such as ancient,science,viel,weigh
Escape character class
\ d this regular expression has the same effect as [0-9], matching any number. (to match\ d, you should use regular expressions\\ d)
\ w is the same as [0-9A-Za-z], which means to match a numeric or alphabetic character
\ s means to match a blank character (space, tab, carriage return or line feed)
In addition,
\ D is the same as [^ 0-9], which means that it matches a non-numeric character.
\ W is the same as [^ 0-9A-Za-z], which matches a character that is not a number and is not a letter.
\ s means to match a non-empty character.
These are the characters you must master. As you may have noticed, a full stop. It is also a character class that can match any character.
Many regular expression implementations provide more character classes, or flag bits extend existing character classes based on ASCII codes.
Special tip: the unified character set contains more numeric characters than 0 to 9, as well as more null and alphabetic characters. When actually using regular expressions, please review the relevant documentation carefully.
Practice
Simplify the regular expression [0-9] [0-9] [0-9]-[0-9] [0-9]-[0-9] [0-9].
Answer
\ d\ d -\ d\ d -\ d.
Repetition
After a character or character set, you can use {} curly braces to indicate repetition
The regular expression a {1} has the same meaning as an and indicates that it matches the letter a
A {3} indicates the matching string "aaa"
A {0} indicates that an empty string is matched. From the point of view of the regular expression itself, it makes no sense. If you execute such a regular expression on any text, you can locate the start of the search, even if the text is empty.
A\ {2\} indicates the matching string "a {2}"
In character classes, curly braces have no special meaning. [{}] matches a curly braces on the left or a curly braces on the right
Practice
Simplify the following regular expression
Z.z
\ d\ d -\ d\ d\ d
[aeiou] [aeiou]
[bcdfghjklmnpqrstvwxyz] [bcdfghjklmnpqrstvwxyz]
Answer
Z. {7} z
\ d {4} -\ d {2} -\ d {2}
[aeiou] {6}
[bcdfghjklmnpqrstvwxyz] {10}
Note: repetitive characters have no memory, for example, [abc] {2} means to match "an or b or c" first, and then "an or b or c", the same as matching "aa or ab or ac or ba or bb or bc or ca or cb or cc". [abc] {2} does not mean to match "aa or bb or cc"
Specify a range of repetitions
The number of repeats can be specified.
X {4pm 4} is the same as x {4}
Colou {0line 1} r means to match colour or color
A {3 aaaa 5} means to match aaaaa or aaaa or aaa
Note that such regular expressions match the longest string first. For example, entering I had an aaaaawful day matches the aaaaa in the word aaaaawful rather than the aaa in it.
The number of repetitions can have a range, but sometimes this method can not find the best answer. If your input text is I had an aaawful daaaaay, you can only find aaawful when you match for the first time, and you can only find aaaaa in daaaaay if you perform the match again.
The range of repetition times can be an open interval.
A {1,} means to match one or more consecutive characters a. Is still the longest string to match. When the first an is found, the regular expression tries to match as many consecutive letters as possible.
. {0,} means to match anything. No matter what text you enter, even if it is an empty string, the regular expression will successfully match the full text and return the result.
Practice
Use regular expressions to find double quotation marks. Requires that the input string may contain any character.
Adjust your regular expression so that there are no other double quotes in the middle of a pair of double quotes.
Answer
". {0,}", then "[^"] {0,} ".
About the escape characters of repetition
? It is the same as {0jue 1}. For example, colou?r means to match colour or color.
* same as {0,}. For example,. * means to match anything.
+ same as {1,}. For example,\ w + means to match a word. Where "one word" refers to a string consisting of one or more characters, such as _ var or AccountName1.
These are the common escape characters you must know, in addition to:
\?\ *\ + indicates the matching string "? * +"
[? * +] matches a question mark, or a * sign, or a plus sign
Practice
Simplify the following regular expressions:
". {0,}" and "[^"] {0,} "
X?x?x?
Yellowy *
Zonal zodiac +
Answer
". *" and "[^"] * "
X {0,3}
Y *
Z {4,}
Practice
Write a regular expression and look for two words separated by non-alphabetic characters. What if it's three? What about six?
\ W +\ w +.
Below, we will simplify this regular expression.
Non-greedy matching
The regular expression ". *" matches double quotes, followed by anything, followed by a double quotation mark. Note that anything that matches can also be double quotation marks. Usually, this is not very useful. By adding a question mark at the end of the sentence, you can make the string repetition no longer match the longest character.
\ d {4pr. 5}? Indicates a match\ d\ d\ d or\ d\ d. That's the same as\ d {4}.
Colou??r is the same as colou {0jue 1} r, which means that color or colour was found. This is the same as colou?r.
". *?" It is useful to match a double quotation mark first, then the fewest characters, and then a double quote, which is different from the above two examples.
Select matching
You can use | to separate the different choices that can be matched:
Cat | dog indicates matching "cat" or "dog"
Red | blue | and red | | blue and | red | blue indicate that they match red or blue or an empty string
A | b | c is the same as [abc]
Cat | dog |\ | match "cat" or "dog" or a delimiter "|"
[cat | dog] means to match an or c or d or g or o or t or a delimiter "|"
Practice
Simplify the following regular expressions:
S | t | u | v | w
Aa | ab | ba | bb
[abc] | [^ abc]
[^ ab] | [^ bc]
[ab] [ab] [ab]? [ab]?
Answer
[Smurw]
[ab] {2}
.
[^ b]
[ab] {2,4}
Practice
Use regular expressions to match integers between 1 and 31. [1-31] is not the correct answer!
Such regular expressions are not unique. [1-9] | [12] [0-9] | 3 [01] is one of them.
Grouping
You can use parentheses to indicate grouping:
Match a day of the week by using Mon | Tues | Wednes | Thurs | Fri | Satur | Sun) day
(\ w *) ility is the same as\ w*ility. All match a word that ends with "ility". We will explain later why the first method is more useful.
\ (\) indicates that it matches a pair of parentheses.
[()] means to match any left parenthesis or right parenthesis
Practice
Find a pair of parentheses in the time machine, and then find the content without parentheses by modifying the regular expression.
Answer
\ (. *). Then,\ ([^ ()] *\) [^ ()] *.
Grouping can include empty strings:
(red | blue) indicates that it matches red or blue or an empty string
Abc () def is the same as abcdef
You can also use repetition on a grouping basis:
(red | blue)? Same as (red | blue |)
\ w + (\ s +\ w +) means to match one or more words separated by spaces
Practice
Simplify the regular expressions\ W +\ W + and\ W +\ w +\ w +.
Answer
\ W + (\ W +\ w +) {2},\ w + (\ W +\ w +) {5}.
Word separator
There is a word separator between words and non-words. Remember, a word\ w is [0-9AmurZamurz _], and the non-word character is\ W (uppercase), which means [^ 0-9AmurZaMuz _].
There are usually word separators at the beginning and end of the text.
In the input text it's a cat, there are actually eight word delimiters. If we put a space after cat, there are nine word delimiters. .
\ b means to match a word separator
\ b\ w\ w\ b means to match a three-letter word
A\ ba indicates that there is a word delimiter between the two a. This regular expression will never have matching characters, no matter what text is entered.
The word delimiter itself is not a character. Their width is 0. The following regular expressions work differently
(\ bcat)\ b
(\ bcat\ b)
\ b (cat)\ b
\ b (cat\ b)
Practice
Find the longest word in the dictionary.
Answer
After trying, it is found that\ b. {45,}\ b can find the longest word in the dictionary.
Newline character
There can be one or more lines in a text, separated by newline characters, such as:
Line one line of text
Line break newline character
Line one line of text
Line break newline character
...
Line break newline character
Line one line of text
Note that all text ends with a line, not a newline. However, any line can be empty, including the last line.
The starting position of the line is the space between the newline character and the first character of the next line. Considering the word delimiter, the starting position of the text can also be regarded as the first line position.
The last line is the space between the trailing character and the newline character of the last line. Considering the word delimiter, the end of the text can also be considered the end of the line.
Then the new format is as follows:
Start-of-line, line, end-of-line
Line break
Start-of-line, line, end-of-line
Line break
...
Line break
Start-of-line, line, end-of-line
Based on the above concepts:
^ indicates the start position of the matching line
$indicates the end position of the matching line
^ & represents a blank line
^. * & matches the full text because the beginning of the line is also a character, "." Will match this symbol. To find a separate line, you can use ^. *? $
\ ^\ $indicates the matching string "^ $"
[$] indicates that it matches a $. However, [^] is not a legal regular expression. Remember that in square brackets, characters have different special meanings. To match ^ in square brackets, you must use [\ ^]
Like character delimiters, newline characters are not characters. They are 0. 5% wide. The regular expressions shown below work differently:
(^ cat) $
(^ cat$)
^ (cat) $
^ (cat$)
Practice
Use regular expressions to find the longest line in the time Machine.
Answer
Use the regular expression ^. {73,} $to match a line of length 73
Text boundary
In many regular expression implementations, ^ and $are used as the start and end symbols of the text.
In other implementations,\ An and\ z are used as the beginning and end symbols of the text.
Capture and replace
From here on, regular expressions really show its power.
Capture group
You already know that parentheses can be used to match a set of symbols. Substrings can also be captured using parentheses. Assuming that the regular expression is a minicomputer program, capturing the substring is part of its output.
The regular expression (\ w *) ility means to match a word that ends in ility. The first part that is captured is controlled by\ w *. For example, if there is the word accessibility in the input text, the first part to be captured is accessib. If there is a separate ility in the entered text, the first thing to capture is an empty string.
You may have a lot of capture strings, and they may be very close. The capture group is numbered from left to right. That is, you only need to count the left parentheses.
Suppose there is such a regular expression: (\ W +) had a ((\ w +)\ w +)
The input is: I had a nice day
Capture group 1 PUR I
Capture group 2:nice day
Capture group 3:nice
In some regular expression implementations, you can start numbering from zero, and the zero number matches the whole sentence: I had a nice day.
In other implementations, if no capture group is established, capture group 1 automatically fills in the information of capture group 0.
Yes, it also means there will be a lot of parentheses. There are some regular expression implementations that provide "non-capture group" syntax, but this syntax is not the standard syntax, so we will not introduce it.
The number of capture groups returned from a successful match is the same as the number of capture groups obtained using the original regular expression. With this in mind, you can explain some strange phenomena. .
The regular expression ((cat) | dog) indicates that it matches cat or dog. There are two capture groups. If the input text is dog, then capture group 1 is dog and capture group 2 is empty.
The regular expression a (\ w) * matches a word that starts with a. There's only one capture team here.
If the input text is a, capture group 1 is empty.
If the input text is ad, the capture group is d
If the input text is avocado, capture group 1 is v. But capture group 0 means the whole word avocado.
Replace
If you use a regular expression to match a string, you can describe another string to replace the matching character. The string used to replace is called a replacement expression. Its function is similar to
Regular Replace session
String.replace () function in Java
The str_replace () function of PHP
Wait
Practice
Replace all vowels in the time machine with r.
Answer
Using the regular expressions [aeiou] and [AEIOU], the corresponding replacement strings are rMagne R.
However, you can reference the capture group in the replacement expression. This is the only place you can operate in a replacement expression. This is also very effective because you don't have to ReFactor the string you find.
Suppose you are trying to replace the American-style date representation MM/DD/YY with ISO 8601 date representation YYYY-MM-DD
Start with the regular expression (\ d\ d) / (\ d\ d) / (\ d\ d). Note that there are three capture groups: month, date, and two-digit year.
. The contents of the capture group and the capture group number are separated by a backslash, so your replacement expression should be 20\ 3-1-2.
If the text we enter contains 03ax 04max 05 for March 4, 2005, then:
1:03 of the capture group
2:04 of the capture group
3:05 of the capture group
Replace the string 2005-03-04.
In a replacement expression, you can use the capture group multiple times
For double vowels, the regular expression is ([aeiou]) and the replacement expression is\ l\ l
Backslashes cannot be used in replacement expressions. For example, you want to use part of the text in a string in a computer program. Then, you must put a backslash before each double quotation mark or backslash.
Your regular expression can be ([\ "]). Capture group 1 is double quotation marks or backslash
Your replacement expression should be\ l
In some implementations, the dollar sign $is used instead of\
Practice
Use regular and substitution expressions to convert a timestamp such as 23h69 to 23:59.
Answer
Regular expression finds the timestamps, replacement expression\ 1:\ 2
Reverse reference
You can also refer to a capture group in a regular expression. This is called: backreference
For example, [abc] {2} means to match aa or ab or ac or ba or bb or bc or ca or cb or cc. But {[abc]}\ 1 means that only aa or bb or cc is matched.
Practice
In the dictionary, find the longest word that contains twice repeated substrings, such as papa, coco
\ b (. {6,})\ 1\ b matches chiquichiqui.
If we don't care about the integrity of the word, we can ignore the word decomposition and use the regular expression (. {7,})\ 1 to match countercountermeasure and countercountermeasures.
Programming with regular expressions
Special reminder:
Overused backslash
In some programming languages, such as Java, there are no special tags for strings that contain regular expressions. Strings have their own filtering rules, which take precedence over regular expression rules, which is why backslashes are frequently used.
For example, in Java
Matches a number and changes the regular expression used from\ d to String re= "\\ d" in the code
A regular expression that matches a double quote string changes from "[^"] * "to String re ="\ "[^\"] *\ "".
The regular expression that matches the backslash or the left square bracket or the right square bracket changes from [\ []] to String re = "[\]
\ [\]\
] "
String re = "\\ s"; and String re = "[\ t\ r\ n]"; are equivalent. Notice that they actually perform the call at a different level.
In other programming languages, regular expressions are specifically marked, such as using /. Here is an example of JavaScript:
If you match a number,\ d will be written simply as var regExp = /\ dUniverse.
Match a backslash or a left square bracket or a right square bracket, var regExp = / [\\ [] /
Var regExp = /\ s var regExp; and var regExp = / [\ t\ r\ n] /; are equivalent
Of course, this means that you have to repeat it twice when using /. For example, to find URL, you must use var regExp = / https?:\ /\ /;.
I hope now you can understand why I asked you to pay special attention to the backslash.
Dynamic regular expression
Be especially careful when you dynamically create a regular expression. If you use a string that is not perfect enough for flowers, there may be unexpected matching results. This can lead to syntax errors, and to make matters worse, your regular expressions are grammatically correct, but the results are unpredictable.
Wrong Java code:
String sep = System.getProperty ("file.separator"); String [] directories = filePath.split (sep)
Bug:String.split () considers sep to be a regular expression. However, in Windows, Sep means to match a backslash, which is the same as the regular expression "\". This regular expression is correct, but returns an exception: PatternSyntaxException.
Any good programming language will provide a good mechanism to skip all metacharacters in the string. In Java, you can do this:
String sep = System.getProperty ("file.separator")
String [] directories = filePath.split (Pattern.quote (sep))
Regular expressions in loops
Adding a regular expression string to a repeatedly running program is an expensive operation. If you can avoid using regular expressions in loops, you can greatly improve your efficiency.
Other suggested input validation
Regular expressions can be used for input validation. However, strict input verification will make the user experience worse. For example:
Credit card number
On a website, I entered my card number, such as 1234 5678 8765 4321, and refused to accept it. Because it uses the regular expression\ d {16}.
Regular expressions should take into account the spaces and dashes entered by the user.
In fact, why not filter out all non-numeric characters before validating them? To do this, you can first use\ D and an empty replacement expression.
Practice
Use regular expressions to verify the correctness of card numbers without first filtering out all non-numeric characters.
Answer
\ D* (\ d\ D*) {16} is one of several variations which would accomplish this.
First name
Do not use regular expressions to validate names. In fact, even if you can, don't try to verify the name.
Programmers' misconceptions about names:
There are no spaces in the name
There is no connection symbol in the name.
Only ASCII characters are used in the name.
All the words in the name are in the special character set.
The name must be at least M words long.
The name will not exceed the length of N words.
People only have one name.
People only have one middle name.
People have only one surname (the last three are considered from the English first name)
e-mail address
Do not use regular expressions to verify the correctness of your email address.
First of all, such verification is difficult to be accurate. E-mail addresses can be verified with regular expressions, but expressions can be very long and complex.
Short regular expressions can cause errors. Do you know? There will be some comments in the email address)
Second, even if an e-mail address can successfully match the regular expression, it does not mean that the mailbox actually exists. The only way to verify a mailbox is to send a verification email.
Be careful
In strict application scenarios, do not use regular expressions to parse HTML or XML. Parse HTML or XML:
Cannot be done with a simple regular expression
Generally speaking, it is very difficult.
There are other ways to solve the problem.
Find an existing parsing library to do the job.
That's what 55 minutes are all about.
Summary:
Character: a b c d 12 3 4 etc.
Character class:. [abc] [amerz]\ d\ w\ s
. Represents any character
\ d means "number"
\ w stands for "letter", [0-9AmurZamurz _]
\ s means "space, tab, carriage return or newline character"
Negative character class: [^ abc]\ D\ W\ S
Repeat: {4} {3jue 16} {1,}? * +
? Means "zero or one time"
* means "greater than zero"
+ means "one or more times"
If not? All repetitions are the longest match (greed)
Grouping: (Septem | Octo | Novem | Decem) ber
Separation of words, lines, and text:\ b ^ $\ A\ z
Escape character:\ 1\ 2\ 3 etc. (available in both matching and replacement expressions)
Metacharacter:. \ [] {}? * + | () ^ $
Use metacharacters in character classes: []\-^
Use a backslash to ignore metacharacters:\
Thank you
Regular expressions are infrequently used and very useful. Everyone must know how to use regular expressions when editing text or writing programs.
Practice choosing some implementation of regular expressions and reading the relevant documentation. I promise, you'll learn more. This is the end of the introduction to regular expressions. Thank you for reading. If you want to know more about the industry, you can follow the website, the editor will output more high-quality practical articles for you!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.