小弟现在做一个通信项目要和银行之间处理报文,我才上手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)
再次跪求大家啦!

解决方案 »

  1.   

    X表示任意字符的话用 . 一个点来表示
    C表示处理双引号的话用 [^\"] 
    G表示字符集和GB2312用 [\u4e00-\u9fa5]
      

  2.   

    try...//N
    [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]
      

  3.   

    2楼的还有部分错误,现我已经修正  全部可以通过编译  给大家参考下
    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=?
      

  4.   


    错误指的是哪里,是指“\”要写成“\\”吗?
    我写的只是纯正则,至于应用到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]秒?
      

  5.   

    比如:date :2008年9月11日    20080911    regex=?       时间 : 11点58分25秒    115825      regex=?注意:红色是要匹配的格式,要进行验证是否格式正确!再次拜托大家啦!