java正则引号
A. java中非中文的正则表达式是什么
非中文 [^\u4e00-\u9fa5]
中文的正则表达式是[\u4e00-\u9fa5]
其他正则表达式
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
以上在java中使用时用双引号将它们括起来就可以了
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9] (单个数字)
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
以上在java中使用时除了将它们用双引号括起来以为,还须加\转义,例如\d的实际用法是”\\d“
POSIX 字符类(仅 US-ASCII)
\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]
以上字符串要加双引号和反斜杠号Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
用法也是将它们用双引号括起来
Logical 运算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组
用法也是将它们用双引号括起来
注意:正则表达式则有在方法参数明确是以正则表达式为参考时才使用,否则如果方法参数是普通字符序列时是不起作用的。
(引自网络和书籍)
B. java中*的用法
你说的是正则表达式里的*号,正则表达式本身是一个字符串,而字符串用双引号""表示。
C. 在正则表达式中\\.和.有什么区别
一、作为Java的转义字符
1.在Java中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行(\n)、回车符(\r)、制表符(\t)。
2.在Java中以下字符都有特殊意义,无法直接表示
单引号:char c = 'a'; 表示字符类型的数据时需要使用单引号将字符左右括起来。所以要表示字符'则需要使用\'
双引号:String str = "abc"; 表示字符串类型的数据时需要使用双引号将字符串左右括起来。要表示字符串"则需要\"
反斜杠:String regex = "你好\n\t阿"; 在Java代码中\表示转义字符,所以如果要表示字面意思的\,则需要使用\\
所以用反斜杠加上本身字符来进行表示。
二、在正则表达式中
2.1Java中正则表达式的\
\表示将下一字符标记为特殊字符。如\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 = str.replaceAll("(?<![0-9)}\\]])(?=-[0-9({\\[]) ","0");
2.2说明:
字符 说明
^ 匹配输入字符串开始的位置。如果设置了 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_]"等效。
2.3Java正则表达式的使用方法
使用正则表达式需要引入 java.util.regex 包,我们就从这里入手讲解:
java.util.regex
java.util.regex 包主要包括以下三个类:
Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
matches方法
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误
D. Java中如何使用正则匹配一对中括号中的引号冒号(":),目的是在冒号后加个空格
我觉得楼上那位说把中括号里的取出来处理了再弄回去可行啊,把原字符串一分为三,把中间处理了再组合起来,但是我写的这个很low只能处理一次中括号:
E. 正则表达式如何写(替换双引号里面的逗号):
正则表达式 (".*?),(.*?") 替换成 $1@$2
我给你一个Java语言的例子,你看看吧.
publicclassAA{
publicstaticvoidmain(String[]args){
Strings="abc,"sdfs,dfs",dfds,"dfsx,sdfasd"";
Stringregex="(".*?),(.*?")";
System.out.println(s.replaceAll(regex,"$1@$2"));
}
}
运行结果
abc,"sdfs@dfs",dfds,"dfsx@sdfasd"
F. 关于JAVA正则表达式里的\
1.41(16进制)是A字符的ascii码
2.JAVA字符串是用""括起来的,字符串中例如内容有双引号",这样写"""是有错的,就需要用\转义字符将"表示为一个普通字符,则写为"\""。