首页  >  文章  >  Java  >  Java 中的正则表达式

Java 中的正则表达式

WBOY
WBOY原创
2024-08-30 15:33:26272浏览

在 Java 中,Regex 或正则表达式是一种应用程序编程接口,可帮助定义搜索、操作和编辑字符串的模式。 Java 正则表达式广泛用于密码和电子邮件的验证。这些表达式由 java.util.regex 包提供,由 1 个接口和 3 个类组成。

这三个类是:

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

  • 模式:帮助定义模式。
  • 匹配器:使用模式有助于执行匹配操作。
  • PatternSyntaxException: 帮助指示语法错误。

Java Regex 有一个名为 MatchResultInterface 的接口,可帮助确定正则表达式的匹配操作结果。

Java 中正则表达式的语法

让我们看看如何借助程序用 Java 编写正则表达式。

代码:

//Java program to demonstrate regular expressions
import java.util.regex.*;
public class RegExamples {
public static void main(String args[]){
String A = " Happiness is " + " within yourself";
String B = ".*within.*";
// checks whether the string A contains the word 'within' and stores the result in matchcheck
boolean matchcheck = Pattern.matches(B, A);
//prints the result
System.out.println("Is there any string 'within' in the text ? \n " + matchcheck);
}   }

输出:

Java 中的正则表达式

正则表达式中常用的方法

正则表达式中常用的方法有3种。

1.索引方法

索引方法提供索引值,有助于精确显示在作为输入给出的字符串中找到匹配项的位置。

Method Description
start() The previous match’s start index is returned.
start(int group) Given the group’s previous match operation, the subsequence is captured and returned.
end() The offset after matching the last character is returned.
End(int group) Given the group’s previous match operation, subsequence is captured and offset after matching its last character returned.
方法

描述

开始() 返回上一场比赛的开始索引。 开始(int组) 考虑到该组之前的匹配操作,捕获并返回子序列。 结束() 返回匹配最后一个字符后的偏移量。 结束(int组) 考虑到该组之前的匹配操作,将捕获子序列并在匹配返回的最后一个字符后进行偏移。 表> 2.学习方法
Method Description
lookingAt() Match the sequence given as input against the pattern from the beginning of the region.
find() Finds the next subsequence of the sequence given as input against the pattern from the beginning of the region.
find(int start) Resets the matcher and then finds the next subsequence of the sequence given as input against the specified index pattern.
matches() Matches content against the pattern.

学习方法检查作为输入给出的字符串,并返回一个布尔值,指示是否找到模式。

方法

Method Description
appendReplacement(StringBuffer s, String replacement) A non-terminal append and replacement step will be implemented.
appendTail(StringBuffer s) A terminal append and replacement step will be implemented.
replaceAll(String replacement) Replace all subsequence of the sequence given as input that matches against the pattern with a replacement string.
quoteReplacement(String s) A literal replacement string will be returned for the mentioned string.
replaceFirst(String replacement) Replace the first subsequence of the sequence given as input that matches the pattern with a replacement string.
描述 lookingAt() 将作为输入给出的序列与区域开头的模式进行匹配。 查找() 根据区域开头的模式查找作为输入给出的序列的下一个子序列。 查找(int开始) 重置匹配器,然后根据指定的索引模式查找作为输入给出的序列的下一个子序列。 匹配() 将内容与模式进行匹配。 表> 3.更换方法 用于替换字符串中文本的方法。 方法 描述 appendReplacement(StringBuffer s, 字符串替换) 将实施非终止附加和替换步骤。 appendTail(StringBuffer s) 将实施终端追加和替换步骤。 replaceAll(字符串替换) 用替换字符串替换作为输入给出的与模式匹配的序列的所有子序列。 quoteReplacement(String s) 将为所提到的字符串返回文字替换字符串。 replaceFirst(字符串替换) 用替换字符串替换作为输入给出的与模式匹配的序列的第一个子序列。 表>

How to Define Regular Expression in Java?

There are several ways in which a regular expression can be defined.

1. Literals

Suppose a string “hai” has to be searched in the text “hai”.

It can be done using syntax.

Pattern.matches("hai", "hai")

2. Character Classes

It matches every single character in the text given as input against multiple permitted characters in the character class.

The following are the various class constructs.

Character Class Explanation
[pqr] Matches the text if it contains either p, q or r, and it should be only once.
[^pqr] ^ denotes the negation, and due to that, here, single character except for p, q, or r are taken.
[a-zA-Z] a to z and A to Z are considered.
[a-d[p-s]] a to d, or p to s.
[a-dm-p] Union of both ranges.
[a-z&&[pqr]] a to z and (p, q or r).
[a-z&&[^pq]] a to z and also, p, q are not considered.
[ad-z] Performs the subtraction.
[a-z&&[^m-p]] a to z and not m to p.

3. Metacharacters

Metacharacters act like shortcodes in the regular expression.

The following are some of the metacharacters commonly used.

Regular Expression Explanation
\d Any digit from 0 to 9. It can be written as [0-9] as well.
\D Any non-digit from 0 to 9. It can be written as [^0-9] as well.
\s Whitespace character or [\t\n\x0B\f\r].
\S Non whitespace character or [^\s].
\w Word character or [a-zA-Z_0-9].
\W Non-word character or [^\w].
\b Word boundary.
\B Non-word boundary.

4. Quantifiers

Quantifiers mention the count of occurrence of each character to match against the string.

Regular Expression Explanation
a? It occurs once or not at all.
A* A occurs 0 or more times.
A+ A occurs 1 or more times.
A{n} A occurs exactly n times.
A{n,} A occurs n or more than that.
A{n,m} A occurs at least n times, but it should not be more than m times.

How to Create Regular Expression in Java?

Now, let us see a java program with the above-mentioned regular expressions.

Code:

//Java program to demonstrate regular expressions
import java.util.regex.*;
public class RegExamples {
public static void main(String args[]){
String str="hai";
// Returns true if string 1 matches string 2
System.out.println("Returns true if 'hai' matches 'Hai' :"+
Pattern.matches(str, "Hai")); //False
//Returns true if Hai or hai matches parameter 2
System.out.println("Returns true if 'Hai' or 'hai' matches 'Hai' : "+
Pattern.matches("[Hh]ai", "Hai")); //True
// Returns true if the string matches exactly "ann" or "Ann" or "jak" or "Jak"
System.out.println("Returns true if the string matches exactly 'ann' or 'Ann' or 'jak' or 'Jak' with 'Ann' : "+
Pattern.matches("[aA]nn|[jJ]ak", "Ann"));//True
//returns true if the string contains "with" at any place in the string
System.out.println("returns true if the string contains 'with' in the string 'within' : " +
Pattern.matches(".*with.*", "within"));//True
// returns true if the '9448anna' does not have number in the beginning
System.out.println( "returns true if the '9448anna' does not have number in the beginning : "+
Pattern.matches("^[^\\d].*", "9448anna")); //False
System.out.println("returns true if the '9448anna' does not have number in the beginning : " +
Pattern.matches("^[^\\d].*", "anna9448")); //True
}
}

Output:

Java 中的正则表达式

Conclusion – Regular Expressions in Java

Java Regular Expressions are widely used for real-time applications such as password and email verification. These expressions are APIs that define patterns and offer searching, editing, and several other operations in the string.

以上是Java 中的正则表达式的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn