当前位置:

用正则表达式JSON字符串

访客 2024-01-05 741 0

目前JSON格式数据使用很广泛,无论在C#和Java中都经常会用到。

解析JSON字符串,往往要依赖第三方库。

偶尔一个小功能,需引用第三方库来解析JSON有点得不偿失。

反而直接用正则进行匹配更为直接有效(个人观点,不喜勿喷)。

以下面JSON为例:

{"kpjh":"","fpdm":"051002550521","fphm":"43460571","fplxdm":"026","hjse":"0.00","kprq":"20220714133345","jshj":"155633.64","mw":"03-8408>*5<1>796>622-98<>2*7366/360527166/9<>9420<-*-**<82/9/01/7650><*-3","hjje":"155633.64","jym":"1629240248**833707375"}

需求:需解析出里面指定的字段值,如:fpdm字段。

实现:用正则表达式进行字段匹配:

表达式:Stringreg="(?:\""key"\"):\"(?<val>[^\"]*?)\"";key为要匹配的字段名称。

原理:环视要匹配的字段,再将字段值命名捕获到val。

注意:默认匹配字符串中不含有"号才适用。

JAVA代码

  • importjava.util.regex.Matcher;
  • importjava.util.regex.Pattern;
  • publicclassMain{
  • publicstaticvoidmain(String[]args)throwsException{
  • Stringtext="{\"kpjh\":\"\",\"fpdm\":\"051002550521\",\"fphm\":\"43460571\",\"fplxdm\":\"026\",\"hjse\":\"0.00\",\"kprq\":\"20220714133345\",\"jshj\":\"155633.64\",\"mw\":\"03-8408>*5<1>796>622-98<>2*7366/360527166/9<>9420<-*-**<82/9/01/7650><*-3\",\"hjje\":\"155633.64\",\"jym\":\"1629240248**833707375\"}";
  • Stringkey="fpdm";//要匹配的字段
  • Stringreg="(?:\""key"\"):\"(?<val>[^\"]*?)\"";//原理:环视要匹配的字段,再将字段值命名捕获到val
  • Patternpattern=Pattern.compile(reg);
  • Matchermatcher=pattern.matcher(text);
  • Stringvalue="";
  • while(matcher.find()){
  • value=matcher.group("val");
  • }
  • System.out.println("匹配:"key"="value);
  • }
  • }
  • C#代码

  • usingSystem;
  • usingSystem.Text.RegularExpressions;
  • namespaceConsoleApp1
  • {
  • internalclassProgram
  • {
  • privatestaticvoidMain(string[]args)
  • {
  • vartext="{\"kpjh\":\"\",\"fpdm\":\"051002550521\",\"fphm\":\"43460571\",\"fplxdm\":\"026\",\"hjse\":\"0.00\",\"kprq\":\"20220714133345\",\"jshj\":\"155633.64\",\"mw\":\"03-8408>*5<1>796>622-98<>2*7366/360527166/9<>9420<-*-**<82/9/01/7650><*-3\",\"hjje\":\"155633.64\",\"jym\":\"1629240248**833707375\"}";
  • varkey="fpdm";//要匹配的字段
  • varreg="(?:\""key"\"):\"(?<val>[^\"]*?)\"";//原理:环视要匹配的字段,再将字段值命名捕获到val
  • varval=newRegex(reg).Match(text).Groups["val"].Value;
  • Console.Write("匹配:"key"="val);
  • }
  • }
  • }
  • 发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~