java正则表达式
在正则表达式之前,我们首先要知道,在java中,哪些字符不能够直接用,需要用转义字符才能表达出出他原本的意思。例如,如果要让字符串里有\n,那么我们
当然,以下是 Java 字符串和正则表达式中常见的转义字符的总结:
Java 字符串中的转义字符
要表示一个\ ,那么就需要在\前再加一个转义字符\,最终变成\\ (以页面显示为准,要显示出两个反斜杠,csdn也需要在后台打出四个反斜杠)
要表示一个’ ,那么就需要在’前加一个转义字符\,最终变成\’
要表示一个’’ ,那么就需要在’‘前加一个转义字符\,最终变成\’’
\n ,要写成\\n
\t ,要写成\\t
\r,要写成\\r
匹配数字
匹配一个数字
如果你只是想匹配单个数字(0-9),可以使用:
String regex = "\\d";
匹配一个或多个数字
如果你想匹配一个或多个数字(例如,整数),可以使用:
String regex = "\\d+";
说明:\d+:表示一个或多个数字字符。+ 是一个量词,表示前面的模式可以出现一次或多次。
匹配指定数量的数字
如果你想匹配一个特定数量的数字(例如,5位数字),可以使用:
String regex = "\\d{5}";
说明:\d{5}:表示恰好 5 个数字字符。{5} 是一个量词,表示前面的模式出现恰好 5 次。
匹配数字范围
如果你想匹配一个数字范围(例如,1 到 1000),可以使用:
String regex = "([1-9]|[1-9]\\d|[1-9]\\d{2}|1000)";
说明:
竖线|代表逻辑“或”操作。它用于在两个模式之间选择。
[1-9]:匹配 1 到 9。
[1-9]\\d:匹配 10 到 99。
[1-9]\\d{2}:匹配 100 到 999。
1000:匹配 1000。
总结:
正则表达式一般来说分为两个部分,量词和字符
量词
星号(*
)
- 前面的模式的零或多次重复。
- 示例:
a*
匹配"a"
,"aa"
,"aaa"
, …
加号(+
)
- 前面的模式的一次或多次重复。
- 示例:
a+
匹配"a"
,"aa"
,"aaa"
, …
问号(?
)
- 前面的模式的零次或一次重复。
- 示例:
a?
匹配""
(零个a
)或"a"
。
大括号({ }
)
- 定义精确重复次数。例如,
{3}
匹配前面的模式三次,{1,3}
匹配一次到三次。 - 示例:
a{2,4}
匹配两到四个a
。
以下的都是不量词
圆括号(( )
)
- 定义一个捕获组。捕获组可以匹配子模式,并且可以引用后来自动编号的组。
- 示例:
(bar){2}
匹配"foobarbar"
中括号([ ]
)
- 定义一个字符集。字符集匹配括号内列出的任何一个字符。
- 字符集可以使用范围写法:例如,
[abc]
匹配"a"
,"b"
,"c"
中的任意一个字符。 - 可以使用补集:
[^abc]
匹配任何一个不在字符集中的字符。
竖线(|
)
- 代表逻辑“或”操作。它用于在两个模式之间选择。
- 示例:
(foo|bar|baz)
匹配"foo"
,"bar"
, 或"baz"
。
字符
特殊字符和序列
字符或序列 | 说明 |
---|---|
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |
\d | 匹配一个数字(等价于 [0-9] )。 |
\D | 匹配一个非数字字符(等价于 [^0-9] )。 |
\s | 匹配空白字符(如空格、换行符等)。 |
\S | 匹配一个非空白字符(等价于 [^ \f\n\r\t\v] )。 |
\w | 匹配一个字母数字字符(等价于 [A-Za-z0-9_] )。 |
\W | 匹配一个非字母数字字符(等价于 [^A-Za-z0-9_] )。 |
^ | 匹配输入字符串的开始。 |
$ | 匹配输入字符串的结束或行的结束。 |
. | 匹配任意字符,除了换行符。 |
这些是正则表达式中一些基本和常用的字符,但是正则表达式的功能远远超出这些基本字符,你可以通过它们组合成复杂的模式。正则表达式的完整文档包括了许多其他特性,如向前断言、反向引用、子模式命名等。
记住,不同的编程语言对正则表达式可能有不同的实现细节,所以有时候你可能需要使用某种特定语言的正则表达式语法。