其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

如何使用正则表达式提取特定字符串后面的数字

GG网络技术分享 2025-03-18 16:14 2


问题描述:

例如,在下面的字符串中“var jsTimeSharingData={pages:13,data:[”,将pages:后面的13提取出来,正则表达式如何写。我是这么写的\"\'pages:(\\d+)\'\",结果得到pages:13,而不是13。如何写才能只取得数字?

网友观点:

你用的什么语言,比如java 你的代码 匹配之后 ,group(0)是 pages:13 group(1)是13

零宽断言了解一下:
https://www.cnblogs.com/macq/p/6597366.html

你的问题的解答:

 (?<=pages\\:)\\d+

    String phoneString = \\\"哈哈,13888889999\\\";

// 提取数字

// 1

Pattern pattern = Pattern.compile(\\\"[^0-9]\\\");

Matcher matcher = pattern.matcher(phoneString);

String all = matcher.replaceAll(\\\"\\\");

System.out.println(\\\"phone:\\\" + all);

// 2

System.out.println( Pattern.compile(\\\"[^0-9]\\\").matcher(phoneString).replaceAll(\\\"\\\"));;

var str = \'haj123sdk54hask33dkhalsd879\';

function findNum(str){
return str.match(/\\d+/g);
}

alert( findNum(str) ); //[123,54,33,879]

望采纳。

(?!pages:)\\d+

(\\d+)
你可以去这个网站测试一下你的正则,我感觉蛮好用 http://tool.oschina.net/regex/# 正则测试工具,不知道你用的什么语言,python可以

如果你的值直接是对象,可以用 对象.属性 的方式获取。不需要也不能用正则表达式

var jsTimeSharingData={pages:13,data:[]}

alert(jsTimeSharingData.pages);

如果你的值是标准的json格式字符串,可以先解析为对象,也不需要用正则表达式。

var jsTimeSharingData=\'{\\\"pages\\\":13,\\\"data\\\":[]}\'

alert(JSON.parse(jsTimeSharingData).pages);

如果一定要用正则表达式。js中可以用下面方法。

var jsTimeSharingData=\'{pages:13,data:[]}\'

alert(jsTimeSharingData.match(/pages:(\\d+)/)[1]);

如果要只取得数字。只有用后向断言,但是js中不支持,其它语言可以用:

(?<=pages\\:)\\d+

我是在delphi中使用RegExpr。xingjianfengaa的答案正解,解决了我的问题,但不知道为何不可在第一组得到。谢谢caozhy、qq_39196400 、jslang,使用(?<=pages:)\\d+或 (?!pages:)\\d+,会出现exception错误,可能是使用的解释器不同。 同样感谢weixin_41312918、zhuzuyumao,但实例字符串中后面的数字还有很多,单用d+不行(误导你们了)。

使用\\d+

var jsTimeSharingData=\\\"{pages:13,data:[\\\";

function getNumber(str){
return str.match(/\\d+/g);
}

console.log(getNumber(jsTimeSharingData));

如何用正则表达式提取每个符合正则表达的子串?

输入一行字符 有空格 有字母 有数学 设计好了正则,用的是boost的库,用哪个函数能提取出来每个符合正则的子串?

标签:

提交需求或反馈

Demand feedback