相关疑难解决方法(0)

1653
推荐指数
16
解决办法
66万
查看次数

\ d效率低于[0-9]

我昨天做了评论,其中有人曾用一个答案[0123456789]正则表达式,而不是[0-9]\d.我说使用范围或数字说明符比使用字符集更有效.

我决定今天测试一下,并且我惊讶地发现(至少在C#正则表达式引擎中)\d似乎效率低于其他两个似乎没有太大差别的.这是我的10000个随机字符串1000个随机字符的测试输出,其中5077实际上包含一个数字:

Regular expression \d           took 00:00:00.2141226 result: 5077/10000
Regular expression [0-9]        took 00:00:00.1357972 result: 5077/10000  63.42 % of first
Regular expression [0123456789] took 00:00:00.1388997 result: 5077/10000  64.87 % of first
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是有两个原因:

  1. 我原以为该范围的实施要比套装更有效.
  2. 我无法理解为什么\d会比这更糟糕[0-9].还有\d简单的简写[0-9]吗?

这是测试代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace SO_RegexPerformance
{
    class Program
    {
        static void Main(string[] args)
        {
            var rand = new …
Run Code Online (Sandbox Code Playgroud)

c# regex performance

1214
推荐指数
4
解决办法
8万
查看次数

正则表达式中\ b和\ B之间的区别

我正在读一本关于正则表达式的书,我遇到了这个例子\b:

猫把食物散落在整个房间里.

使用正则表达式- \bcat\b将匹配单词cat而不是catscattered.

对于\B作者使用以下示例:

请输入九位数的ID

出现在颜色编码的密钥上.

在单词之间使用正则表达式\B-\B匹配.使用在另一方面相匹配的中和.-color - coded\b-\b-nine-digitpass-key

为什么我们用第一个例子\b来分离cat和在第二个用途\B中分开-?使用\b在第二个例子中做的是什么前面却反其道而行之.

请向我解释一下这个区别.

编辑:此外,任何人都可以用一个新的例子来解释?

regex

92
推荐指数
5
解决办法
9万
查看次数

参考 - 这个正则表达式意味着什么?

这是什么?

这是常见问答的集合.这也是社区Wiki,因此每个人都被邀请参与维护.

为什么是这样?

患的是给我泽码型的问题和答案不佳,没有解释.此参考旨在提供质量问答的链接.

范围是什么?

此引用适用于以下语言:,,,,,,.

这可能过于宽泛,但这些语言共享相同的语法.对于特定功能,它背后的语言标签,例如:

  • 什么是正则表达式平衡组?

regex

52
推荐指数
1
解决办法
11万
查看次数

正则表达式:数字范围

你如何编写一个匹配数字范围从0到000到180的正则表达式?

regex

29
推荐指数
3
解决办法
5万
查看次数

如何使用正则表达式匹配X和Y之间的数字?

我想在RegExp中匹配X和Y之间的数字.这可能吗?

([0-9] +)将匹配任何数字,我怎么能匹配一个数字,例如,110和2234?

regex

24
推荐指数
5
解决办法
4万
查看次数

功能创建匹配数字范围的正则表达式

我正在使用Amazon Mechanical Turk API,它只允许我使用正则表达式来过滤数据字段.

我想为一个函数输入一个整数范围,例如256-311或45-1233,并返回一个只匹配该范围的正则表达式.

匹配256-321的正则表达式将是:

\b((25[6-9])|(2[6-9][0-9])|(3[0-1][0-9])|(32[0-1]))\b
Run Code Online (Sandbox Code Playgroud)

这部分相当容易,但是我在创建这个正则表达式时遇到了麻烦.

我正在尝试构建一个这样定义的函数:

function getRangeRegex( int fromInt, int toInt)
{

      return regexString;
}
Run Code Online (Sandbox Code Playgroud)

我浏览了整个网络,我很惊讶它看起来似乎没有人在过去解决过这个问题.这是一个难题......

谢谢你的时间.

php regex integer function range

7
推荐指数
2
解决办法
5145
查看次数

怎么样?在正则表达式中使量词变得懒惰

我一直在寻找到最近的正则表达式,并盘算了一下,?运营商使*,+?懒惰.我的问题是它是如何做到的?*?例如它是一个特殊的运算符,还是?对它有影响*?换句话说,没有正则表达式识别*?为一个运营商本身,还是正则表达式识别*?为两个独立的运营商*??如果*?是被识别为两个独立运算符的情况,那么?影响*它如何变得懒惰.如果?意味着它*是可选的,那么这*不应该意味着它根本不存在.如果是,那么在声明中.*?不会正则表达式匹配单独的字母和整个字符串而不是较短的字符串?请解释一下,我迫切希望了解.非常感谢.

regex operators quantifiers

3
推荐指数
2
解决办法
1487
查看次数

正则表达式匹配1-5000之间的数字

我想使用正则表达式的文本框只允许1-5000之间的数字

我尝试了以下但它不会工作:

@"/^(?:1|5000|-[1-9]\d?)$/
Run Code Online (Sandbox Code Playgroud)

c# regex

2
推荐指数
2
解决办法
1127
查看次数

正则表达式年龄验证 17-120

我需要制作一个正则表达式来验证 17-120 之间的年龄,包括(17 和 120)

我试过这个

^(100|[1-9][7-9][0-9]?)$

我知道这不好,但我不明白该怎么做

我需要在我的表单中使用模式属性提交年龄

只有数字允许

html regex

1
推荐指数
1
解决办法
7753
查看次数