正则表达式 (\d*\.?\d+)\s?(\w+)[0-9]+ (\d*\.?\d+)\s?(\w+) 这两个的区别是什么呢?

正则表达式(\d*\.?\d+)\s?(\w+)[0-9]+(\d*\.?\d+)\s?(\w+)这两个的区别是什么呢?... 正则表达式
(\d*\.?\d+)\s?(\w+)[0-9]+

(\d*\.?\d+)\s?(\w+)
这两个的区别是什么呢?
展开
 我来答
乱红斋
高粉答主

2018-03-30 · 关注我不会让你失望
知道大有可为答主
回答量:388
采纳率:100%
帮助的人:10.1万
展开全部

一个匹配有符号数,另一个匹配有符号数或无符号数。


正则表达式,又称规则表达式,是计算机科学的一个概念,这个概念最初是由Unix中的工具软件普及开的。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。正则引擎主要分为DFA、NFA两大类。许多程序设计语言都支持利用正则表达式进行字符串操作。

在最近的六十年中,正则表达式逐渐从模糊而深奥的数学概念,发展成为在计算机各类工具和软件包应用中的主要功能。不仅仅众多UNIX工具支持正则表达式,近二十年来,在WINDOWS的阵营下,正则表达式的思想和应用在大部分 Windows 开发者工具包中得到支持和嵌入应用。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

qiao_liu
推荐于2018-02-26 · TA获得超过421个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:241万
展开全部
\d表示[0-9]任意数字,等同于[0-9]。
\d*表示0个或多个数字。
\.表示小数点,因为.表示任意这符,所以加\将.转义一下,表示只是点(小数点)的意思。
\.?表示这个点(小数点)最多只能出现一次,即要么不出现,要么只出现一次。?表示出现0次或1次。
\d+表示多次(1次和1次以上)数字。
\s表示空白字符,\s?表示最多只能出现一次空白(通常指空格)字符,即要么不出现,要么出现一次。
\w表示任意字母和下划线。
\w+表示多次出现字母或下划线。

(\d*\.?\d+)\s?(\w+)整体表示正数加字母的组合字符串。如0.12abc、0.189 a_b、123a、123ac_、.12 ac_bd等等。

以上还有疑问,可以Hi我。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weaselpp
2013-05-15 · TA获得超过612个赞
知道小有建树答主
回答量:381
采纳率:33%
帮助的人:325万
展开全部
()括起来的表示原组,就是提取括号里面的匹配的字符串到程序里的数组里, 如果你想了解更多,可以上网查查, 结合实际才更容易了解
\d表示一个数字
\d*表示一个数字重复0次或者多次
\. 转义的是小数点 "." 符号
?表示重复0次或者多次
\s?表示空格或者tab重复0次或者1次
\w+表示字符重复1次或者多次(\w可以表示英文字符,数字,中文等,但不包括标点符号)
[0-9]等同于\d, 所以[0-9]+表示数字重复1次或者多次
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seesea2517
2013-05-15 · TA获得超过1480个赞
知道小有建树答主
回答量:512
采纳率:100%
帮助的人:545万
展开全部
区别在第一个最后有 [0-9]+,这个表示后面必须有一个或多个数字,第二个就没有这个要求。
我觉得lz不是想问这么简单的问题,做好准备回答追问。
追问
有能力的话 把第二个全部解释一下吧。包括 括号 每个组合是什么意思。 本人不是很擅长 正则 谢谢啦
追答

(\d*\.?\d+)\s?(\w+)
\d 表示是数字
\. 就是字面的字符 .
\s 表示空白字符,如空格、制表符、换页符
\w 表示下划线、字母和数字
* 表示前面的内容可以有 0 个或多个
? 表示前面的内容 0 或 1 个
+ 表示前面的内容可以有 1 个或多个

这个表达式就可以匹配类似如下的内容以空白符号分开的数字和一些描述的行,并将相应的内容获取到分组 1 和 分组 2 中:
1111.123123 aksjfdlasjfl
.34234234 askdfljk9_dkfjsdfj

而(\d*\.?\d+)\s?(\w+)[0-9]+就不能匹配上述内容

但由于没有用 ^$ 来限制,也就是说上如果一个字串的某个部分能达到上述要求也能被匹配,所以(\d*\.?\d+)\s?(\w+)[0-9]+可以匹配的内容,(\d*\.?\d+)\s?(\w+)也能匹配成功。

如下为测试代码,保存为 html 文件,浏览器允许运行脚本进行测试。

<html>
<head>
<!--
    保存为 html 文件,浏览器允许运行脚本进行测试。
-->
<script type="text/javascript">
function check()
{
    var str;
    str = document.getElementById("txtInput").value;
    if (str.match(/(\d*\.?\d+)\s?(\w+)/) != null)
    {
        alert("匹配结果:\n分组1:" + RegExp.$1 + "\n分组2:" + RegExp.$2);
    }
    else
    {
        alert("不匹配");
    }
}
</script>
</head>
<body>
    输入:<input type="text" id="txtInput" value="1111.123123 aksjfdlasjfl" />
    <button type="button" onclick="check()">正则检查</button>
</form>
</body>
</html>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迟诗OL
2018-06-09
知道答主
回答量:2
采纳率:0%
帮助的人:1647
展开全部
\d 匹配数字
\. 转义成.
\s 匹配空格
? 匹配零次或一次
+ 匹配一次或者多次
\d \.? 匹配数字. 零次或一次
\d*\.?\d+ 匹配有\d \.?条件下的数字一次或者多次
[0-9]+ 匹配出现0至9中一个数字一次或多次
这俩个表达式只是用来区分结尾处是否为数字 因为\w包括数字,字母,下划线
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式