正则表达式-提取json属性值
元字符
\d : 0-9之间的任意⼀个数字 \d只占⼀个位置
\w : 数字,字母,下划线 0-9 a-z A-Z _
\s : 空格或者空⽩等
\D : 除了\d
\W : 除了\w
\S : 除了\s
. : 除了\n之外的任意⼀个字符
\ : 转义字符
| : 或者
() : 分组
\n : 匹配换⾏符
\b : 匹配边界字符串的开头和结尾空格的两边都是边界 => 不占⽤字符串位数
^ : 限定开始位置 => 本⾝不占位置
$ : 限定结束位置 => 本⾝不占位置
[a-z] : 任意字母 []中的表⽰任意⼀个都可以
[^a-z] : ⾮字母 []中^代表除了
[abc] : abc三个字母中的任何⼀个 [^abc]除了这三个字母中的任何⼀个字符
量词元字符
* : 0到多个
+ : 1到多个
:
0次或1次可有可⽆
{n} : 正好n次;
{n,} : n到多次
{n,m} : n次到m次
JS中常⽤⽅法
str.match(reg) 如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null
//获取字符串中的数字
var reg = /\d+/g;
var str = "125ad6ad8a4da";
str.match(reg);
-->["125", "6", "8", "4"]
//判断⼩时格式
var reg = /[1-9]|1[0-9]|2[0-4]/;
var dultime = "24a";
-->false
<() ⽤来捕获符合规则的字符串
var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.(str))
-->[0:"123",index:3,input:"abc123cba456aaa789"];
0:"123" 表⽰我们捕获到的字符串
index:3 表⽰捕获开始位置的索引
input 表⽰原有的字符串
java中常⽤⽅法
需求:查json字符串中指定属性的值
如果使⽤字符串转json,再遍历json获取属性值,如果层级较多⽐较复杂,所以使⽤正则表达式匹配查,将值作为⼀个⼦串输出
/**
* 正则表达式查匹配的字符串
* @param withinText 字符串
* @param regString 正则表达式
* @param index 提取正则匹配到字符串的哪⼀部分 0整串,1第⼀个()的内容,2第⼆个()...
* @return
*/
public static List<String> searchMatch(String withinText, String regString,int index) {
List<String> resList = new ArrayList<>();
String code = null;
Pattern pattern = Patternpile(regString);
Matcher matcher = pattern.matcher(withinText);
if (matcher.find()) {
while (matcher.find()) {
code = up(index);
resList.add(code);
}
}
return resList;
}
@Test
public void test(){
String str = "{\"./BL_LOAD_NO\":\"14007\",\"./CPS_ORDER_NO\":\"TF201908270011\",\"./SYSID\":\"\",\"errorcode\":\"JM0400\",\"errordescr\":\"./SYSID Field cannot be empty !\"}{\"./BL_LOAD_NO\":\"14027\",\"./CPS_ORDER_NO\":\"TF201908280015\",
\"./SYSID\":\"2601\",\"errorcode\":\"WD04002\",\"errord escr\":\"⼦层数据转换告警:\"}";
正则表达式提取中文List<String> failList = StringUtils.searchMatch(str,"SYSID\":\"(\\w+)?\",",1);
System.out.String());
}
运⾏结果
[null, 2601]
匹配到的整串-->SYSID":"",
整串中指定的⼦串-->null
匹配到的整串-->SYSID":"2601",
整串中指定的⼦串-->2601
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论