This time I will bring you a detailed analysis of using regular expressions to match a single character. What are the precautions for using regular expressions to match a single character? The following is a practical case, let’s take a look.
The example in this article describes the regular expressiontutorial on matching a single character. Share it with everyone for your reference, as follows:
Note: In all examples, the regular expression matching results contain [ and ]## in the source text. #, some examples will be implemented using Java. If it is the usage of regular expressions in Java itself, it will be explained in the corresponding place. All java examples are tested under JDK1.6.0_13.
java test code:/** * 根据正则表达式和要匹配的源文本,输出匹配结果 * @param regex 正则表达式 * @param sourceText 要匹配的源文本 */ public static void matchAndPrint(String regex, String sourceText){ Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(sourceText); while(matcher.find()){ System.out.println(matcher.group()); } }
1. Match plain text
1. Only one matching result
First let’s look at a simple regular expression, today, although it is plain text itself, it is a regular expression. Let’s look at an example: Source text:Yesterday is history, tomorrow is a mystery, but today is a gift.
Regular expression:today
Result: Yesterday is history, tomorrow is a mystery, but[today] is a gift.
Analysis: The regular expression used here is plain text , which matches today in the source text. Call the matchAndPrint method, the output result is: today2. There are multiple matching results
Source text:Yesterday is history, tomorrow is a mystery, but today is a gift.
Regular expression:is
Result :Yesterday is history, tomorrow is a mystery, but[today] is a gift.
Analysis: In the source text, there are three is, but four is is output, because history is in will also be matched. Call the matchAndPrint method, the output result is:is
##is##is
is
3. Letter case problem
The regular expression is Letters are case-sensitive, but many regular expression implementations also support case-insensitive matching operations. In JavaScript
, use the i flag to perform a case-insensitive match.In java, if you want to be case-insensitive, when compiling the regular expression, you can specify:
Patternpattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
The regular expressions we saw earlier are all static plain text, and they do not reflect the power of regular expressions at all. Next, let's see how to use regular expressions to match unpredictable characters.
In regular expressions,Special characters
(or collections of characters) are used to give what to search for. The . character (English status period) can match any single character. Equivalent to the ? character in DOS and the _ (underscore) character in SQL. For example: the regular expression c.t will match cat, cut, cot, etc. Let’s look at an example.orders1.txt
##orders2.txt
sales1.txt
salesA.txt
##orders3.txt
sales2.txt
sales.txt
Regular expression:sales.
Result:orders1.txt
orders2.txt【sales1】.txt
【salesA】.txt
orders3.txt
【 sales2】.txt
【sales.】txt
Analysis: The regular expression sales. will combine stringsales and The file name composed of another note is found. From the results, it can be seen that. can match letters, numbers, and itself. 4 out of 7 files match this pattern.
If the matchAndPrint method is called, the output result is:
sales1
salesA
sales2
sales.
3. Match special characters
. Characters have special properties in regular expressions meaning. If you need a . in the pattern, you have to find a way to tell the regular expression that you need the . character itself rather than its special meaning in the regular expression. To do this, the . must be escaped by preceding it with a \ character. \ is also a metacharacter (metacharacter, indicating that this character has a special meaning, not the character meaning itself). Consider the following example.
Find files starting with na or sa, no matter what number follows it.
Text:
sales.txt
na1.txt
na2.txt
sa1.txt
sanatxt.txt
Regular expression: .a.. txt
Result:
[sal]es.txt
[na1].txt
【na2】.txt
【sa1】.txt
【sanatxt】.txt
Analysis: This regular rule found na1.txt, na2.txt, and sa1.txt, but also found two unexpected results. Because the . character in the regex .a..txt will match any character. To match the . character itself, you need to use \ escape. Modifying the regular expression to .a.\.txt can meet our needs.
Note: If you use java, then the regular expression .a.\.txt should be written as .a.\\.txt, because \ is also an escape character in the java language.
4. Summary
Regular expressions are often referred to as patterns. They are actually strings composed of some characters. These characters can be ordinary characters (plain text) or metacharacters (special characters with special meanings). Here is an introduction to how to use ordinary characters and metacharacters to match unit characters. .can match any character. \ is used to escape characters. In regular expressions, character sequences with special meanings always begin with the \ character.
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!
Recommended reading:
Using php and js to implement regular password matching of numbers and letters
Regular in JQ Verification cannot contain Chinese methods
The above is the detailed content of Detailed analysis of matching single characters using regular expressions. For more information, please follow other related articles on the PHP Chinese website!