php-json 正则表达式匹配问题

问题描述

json 正则表达式匹配问题
有json表达式{""a"":""aaaaaaaaa""aa"":""baaaaaaaaa""aa"":""caaaaaaaaa""b"":{""c"":1d"":""ddddd""}e"":[12597]}我用正则表达式/"".+"":""[^""]+""/想分别提取""a"":""aaaaaaaaa""和""aa"":""baaaaaaaaa""还有""aa"":""caaaaaaaaa""。但是运行结果确实直接""a"":""aaaaaaaaa""aa"":""baaaaaaaaa""aa"":""caaaaaaaaa""一整串。求高手知道这是为什么

解决方案

首先,[^""]这种写法是没必要的,因为在[]内部,""并不需要转义。其实整个正则里,“都不需要转义,因为你是用/作为分隔符的。
其次,你既然知道对第二个引号中的内容使用[^""]+匹配,你为什么不对一个引号内的内容也用[^""]+匹配呢?上面这是一种方法,另一种方法是/"".+?"":""[^""]+""/,即在第一个+后加一个?。

解决方案二:
用正则的分组 (),把需要的字段group取出来

时间: 2024-12-02 21:40:21

php-json 正则表达式匹配问题的相关文章

正则表达式匹配标签问题

问题描述 正则表达式匹配标签问题 <section> //此处为任何内容,会动态改变 </section> <table> //此处也为任何内容,会动态改变 </table> 以上内容以字符串形式复制给了变量str,我需要用正则从str中分别提取<section></section>和<table></table>之间的内容(包括section和table)赋值给str1和str2,我知道一般的正则方法,现在问

perl正则表达式匹配问题

问题描述 perl正则表达式匹配问题 10C 本人小白看不懂前辈写的perl正则表达式 m/=$/ 和 m/[=]/区别,这个要匹配的是哪两种情况 解决方案 后面的表达式是不是不完整 解决方案二: 正则表达式匹配问题perl正则表达式匹配正则表达式之匹配顺序问题 解决方案三: 本人小白看不懂前辈写的perl正则表达式 m/=$/ 和 m/[=]/区别,这个要匹配的是哪两种情况 前一个是匹配一个=号结尾的行,例如 abcdkjalsjfajsflajsfl=而后一个是匹配文本行中 包含 = 号的,

java正则表达式匹配斜杠

在正则表达式里面匹配一个斜杠,需要用4个斜杠: Java代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String textString = new String ("\\\&q

实现正则表达式匹配任意字符解析

我们如何实现正则表达式匹配任意字符的效果呢?这个过程需要使用什么呢?具体的操作需要注意那些方面呢?那么现在我们就来揭开这神秘的一面: 实现正则表达式匹配任意字符的真相: 使用"."匹配几乎任意字符.在正则表达式中,"."是最常用的符号之一.不幸的是,它也是最容易被误用的符号之一. "."匹配一个单个的字符而不用关心被匹配的字符是什么.唯一的例外是新行符.在本教程中谈到的引擎,缺省情况下都是不匹配新行符的.因此在缺省情况下,"."

正则表达式匹配字符串实现详解

使用正则表达式最常用的是考虑实现正则表达式匹配的判断,在实际工作中经常会遇到什么需要匹配的字符串操作呢?下面我们来看看实现正则表达式匹配字符串的操作实例. 正则表达式匹配字符串实例: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字.26个英文字母或者下划线组成

Shell脚本中通过正则表达式匹配IP地址

  这篇文章主要介绍了Shell脚本中通过正则表达式匹配IP地址,本文直接给出实现代码,需要的朋友可以参考下 在运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址. shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互

js 正则表达式-求个正则表达式 匹配000000到820665或者821000到999999的六位数字

问题描述 求个正则表达式 匹配000000到820665或者821000到999999的六位数字 求个正则表达式 匹配000000到820665或者821000到999999的六位数字 解决方案 ([012345679]d{5})|(8[013456789]d{4})|(82[1-9]d{3})|(820[0-5]d{2})|(8206[0-5]d)|(82066[0-5]) 解决方案二: 转为数字对比不就好了,干嘛要正则? function isCorrent(v) { if (!/^d{6}

字符串-java正则表达式匹配数字

问题描述 java正则表达式匹配数字 G3811/ G3885/ G655/l G030/l G3849/ G0150/ G5292/ G955/l G025/l G5300/ 这是控制台输出的字符串,但是我只想要他的数字 怎么匹配 解决方案 Pattern p = Pattern.compile("[0-9]"); Matcher m = p.matcher(elem.attr("abs:href").substring(22, 28)); while (m.fi

正则表达式匹配任意字符(包括换行符)的写法_正则表达式

今天在Java中想使用正则表达式来获取一段文本中的任意字符.于是很随意得就写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.同时,手册上还有一句话:要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式.于是我将正则表达式的匹配规则修改如下: ([.\n]*),当然,如果是在java程序中直接写到话,需要改为([.\\n]*) 结果