小弟现在做一个通信项目要和银行之间处理报文,我才上手java没几天,我想问下下面的X字符集 如何用正则表达式来表达,前面的还算容易,后面X C G字符集 我没法表达啦 大家能够帮下忙吗,我现在要处理报文急需要用!
2.2 属性符号说明
N 表示0至9的数字
A 表示数字和字母
F 表示数字和-小数点(.)
X 表示X-字符集中的任意字符
C 表示X-字符集中除“"”(双引号)、(cr)、(lf)以外的任意字符
G 表示X-字符集和GB2312(双字节字符集)
其中X-字符集由以下86个字符组成
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
. , - ( ) / = ‘ ’ + : ? ! “ % & * < > ; @ #
(cr) (lf) (space)
再次跪求大家啦!
2.2 属性符号说明
N 表示0至9的数字
A 表示数字和字母
F 表示数字和-小数点(.)
X 表示X-字符集中的任意字符
C 表示X-字符集中除“"”(双引号)、(cr)、(lf)以外的任意字符
G 表示X-字符集和GB2312(双字节字符集)
其中X-字符集由以下86个字符组成
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
. , - ( ) / = ‘ ’ + : ? ! “ % & * < > ; @ #
(cr) (lf) (space)
再次跪求大家啦!
C表示处理双引号的话用 [^\"]
G表示字符集和GB2312用 [\u4e00-\u9fa5]
[0-9]
//A
[a-zA-Z0-9]
//F
[0-9.]
//X
[a-zA-Z0-9.,-()/=‘’+:?!\"%&*<>;@#\r\n ]
//C
(?![\"\r\n])[a-zA-Z0-9.,-()/=‘’+:?!\"%&*<>;@#\s]
//G
[a-zA-Z0-9.,-()/=‘’+:?!\"%&*<>;@#\r\n \u4e00-\u9fa5]
public static final String NCharacterSet="[0-9]";
public static final String ACharacterSet="[a-zA-Z0-9]";
public static final String FCharacterSet="[0-9.]";
public static final String XCharacterSet="[a-zA-Z0-9\\(\\).,-/=‘’+:?!\"%&*<>;@#\\r\\n\\s]";
public static final String CCharacterSet="[a-zA-Z0-9\\(\\).,-/=‘’+:?!%&*<>;@#]";
public static final String GCharacterSet="[a-zA-Z0-9\\(\\).,-/=‘’+:?!%&*<>;@#\\r\\n\\s\\u4E00-\\u9FA5]";另外我还想问下大家 8位的日期和6位的时间的正则表达式怎么写啊
比如:date :2008年9月11日 20080911 regex=? 时间 : 11点58分25秒 115825 regex=?
错误指的是哪里,是指“\”要写成“\\”吗?
我写的只是纯正则,至于应用到Java中要用“\\”来转义“\”,这个不用说吧,就像在.NET中加@后不用转义,在JavaScript中两边要加“/”一样
C的那个,根据描述写的,确实有些画蛇添足了,直接从字符组中去掉就可以了
()在正则中虽然是元字符,但用在[]字符组中时,是不需要用“\”转义的需求不明确,是用作验证还是提取,需求不同,写出的正则差别非常大,如果是验证规则,要考虑闰年的问题
^(?![0-9]{6,7}$)(?:(?:(?:(?:(?:1[6-9]|[2-9][0-9])?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))年?(?:0?2月?(?:29)))|(?:(?:(?:1[6-9]|[2-9][0-9])?[0-9]{2})年?(?:(?:(?:0?[13578]|1[02])月?(?:31))|(?:(?:0?[13-9]|1[0-2])月?(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))月?(?:0?[1-9]|1[0-9]|2[0-8]))))日?$
如果是提取,基本上写成下面这样就可以了
[0-9]{4}年?[0-9]{1,2}月?[0-9]{1,2}日?时间也差不多,验证
^(?:[01][0-9]|2[0-3])点?[0-5][0-9]分?[0-5][0-9]秒?$
提取
(?:[01][0-9]|2[0-3])点?[0-5][0-9]分?[0-5][0-9]秒?