
之所以用两个反斜杠表示单个反斜杠字符本身,那是因为,单个反斜杠加上其他某些字母,用于表示特殊的含义。
比如 \d 在正则表达式中表示 匹配数字
而想要输入 反斜杠字符本身 和 字母d那么就只能写成
\\d
其实,这个反斜杠,表示转义,有着更广泛的用途,不了解的可以参考我总结的:
整理什么是转义字符和转义字符的常见用法
(此处不给贴地址,只能靠你自己用google搜帖子标题,就可以找到帖子的地址了)
Java语言中,斜杠“/”没有特殊含义,一个斜杠“/”只是表示字符'/',两个“//”表示注释标记;
反斜杠“\”表示它和紧跟着它的那个字符构成转义字符。
常见的转义字符有:“\n”表示换行并移动到下一行开头,“\t”表示跳到下一个Tab的位置,“\0”表示空字符(NULL)。
扩展资料:
Java注解能够提供代码的相关信息,同时对于所注解的代码结构又没有直接影响。在这篇教程中,我们将学习Java注解,如何编写自定义注解,注解的使用,以及如何使用反射解析注解。
注解是Java 15引入的,目前已被广泛应用于各种Java框架,如Hibernate,Jersey,Spring。注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效。
在注解诞生之前,程序的元数据存在的形式仅限于java注释或javadoc,但注解可以提供更多功能,它不仅包含元数据,还能作用于运行期,注解解析器能够使用注解决定处理流程。
举个例子,在Jersey webservice中,我们在一个方法上添加了PATH注解和URI字符串,在运行期,jersey会对其进行解析,并决定作用于指定URI模式的方法。
参考资料:
Java注释——百度百科
转义字符——百度百科
一、作为Java的转义字符1在Java中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行(\n)、回车符(\r)、制表符(\t)。
2在Java中以下字符都有特殊意义,无法直接表示
单引号:char c = 'a'; 表示字符类型的数据时需要使用单引号将字符左右括起来。所以要表示字符'则需要使用\'
双引号:String str = "abc"; 表示字符串类型的数据时需要使用双引号将字符串左右括起来。要表示字符串"则需要\"
反斜杠:String regex = "你好\n\t阿"; 在Java代码中\表示转义字符,所以如果要表示字面意思的\,则需要使用\\
所以用反斜杠加上本身字符来进行表示。
二、在正则表达式中
21Java中正则表达式的\
\表示将下一字符标记为特殊字符。如\d表示数字字符匹配,等效于 [0-9]。\w表示匹配任何字类字符(字母数字下划线),注意包括下划线。与"[A-Za-z0-9_]"等效。
在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
\\中的第一个\表示java的转义字符\由编译器解析,第二个\是正则表达式\由正则表达式引擎解析。
所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\\\。
所以Java正则表达式中匹配一个普通的反斜杠是\\\\。
所以如果在[]内表示一个],要写两个\,即[\\]]。
例如,我要在前面不是0-9,也不是) ] }三个反括号的后面位置中,匹配 - 的后面是数字或者正括号( [ { 的 - 前面的位置,须写成:
(<![0-9)}\\]])(=-[0-9({\\[]) 。
若在该位置加0,可写成String s = strreplaceAll("(<![0-9)}\\]])(=-[0-9({\\[]) ","0");
22说明:
字符 说明
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。
零次或多次匹配前面的字符或子表达式。例如,zo 匹配"z"和"zoo"。 等效于 {0,}。
+ 一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。
零次或一次匹配前面的字符或子表达式。例如,"do(es)“匹配"do"或"does"中的"do”。 等效于 {0,1}。
{n} n 是非负整数。正好匹配 n 次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。
{n,} n 是非负整数。至少匹配 n 次。例如,"o{2,}“不匹配"Bob"中的"o”,而匹配"foooood"中的所有 o。"o{1,}“等效于"o+”。"o{0,}“等效于"o”。
{n,m} m 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的头三个 o。‘o{0,1}’ 等效于 ‘o’。注意:您不能将空格插入逗号和数字之间。
x y
[xyz] 字符集。匹配包含的任一字符。例如,"[abc]“匹配"plain"中的"a”。
[ ^xyz] 反向字符集。匹配未包含的任何字符。例如,"[^abc]“匹配"plain"中"p”,“l”,“i”,“n”。
[a-z] 字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。
\d 数字字符匹配。等效于 [0-9]。
\D 非数字字符匹配。等效于 [ ^0-9]。
\w 匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。
\W 与任何非单词字符匹配。与"[ ^A-Za-z0-9_]"等效。
23Java正则表达式的使用方法
使用正则表达式需要引入 javautilregex 包,我们就从这里入手讲解:
javautilregex
javautilregex 包主要包括以下三个类:
Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配 *** 作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
matches方法
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误
一、定义不同:
\W:匹配包括下划线的任何单词字符,等价于 [A-Z a-z 0-9_]
\W:匹配任何非单词字符,等价于 [^A-Z a-z 0-9_]
[\w\\_] 相当于[0-9a-zA-Z\\_] ,就是比\w多匹配 '' 和 ‘_’ 两种字符。
二、用途不同:
w前面加了反斜杠,是\w,与[a-zA-Z0-9_]等价,
也就是包含下划线以下的所有字母和数字,
而后面的加号,则是匹配紧跟其前面那个字符的 一次或多次,
中括号[]表示匹配其中任意字符,
[\w/]+就是一或多次匹配,任何数字,字母,下划线,斜杠,还有英文的句号(一个点)。
三、字符不同:
W内的字符可以以任意次序出现。
W后有了+,X内的字符可以取任意多个。于是[]内的字符可以以任意次序出现任意多次,直到遇到第一个非[]内的字符。
如[AB]+ 既可以匹配AAABBB又可以匹配BBBAAA BABAAABA等,不是一定要AB的次序。
扩展资料:
正则表达式的特点是:
1、灵活性、逻辑性和功能性非常强;
2、可以迅速地用极简单的方式达到字符串的复杂控制。
3、对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
参考资料来源:百度百科-正则表达式
这就与python
在字符串中的那些起相同作用的相同字符产生了冲突。
让我们举例说明,你想写一个
re
以匹配字符串
"\section",可能是在一个
latex
文件查找。为了要在程序代码中判断,首先要写出想要匹配的字符串。字符阶段\section要匹配的字符串\\section为recompile
取消反斜杠的特殊意义"\\\\section"为"\\section"的字符串实值(string
literals)取消反斜杠的特殊意义
简单地说,为了匹配一个反斜杠,不得不在
re
字符串中写
'\\\\',因为正则表达式中必须是
"\\",而每个反斜杠在常规的
python
字符串实值中必须表示成
"\\"。这个两个//表示的是正则表达式的隐式构造方式,如在javascript中
var re=/\d/g;
就等同于:
var re =RegExp("\d");
下面的是正则对象的显式构造方法;
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)