我昨天做了评论,其中有人曾用一个答案[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)
令我惊讶的是有两个原因:
\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) 我正在读一本关于正则表达式的书,我遇到了这个例子\b:
猫把食物散落在整个房间里.
使用正则表达式- \bcat\b将匹配单词cat而不是cat在scattered.
对于\B作者使用以下示例:
请输入九位数的ID
出现在颜色编码的密钥上.
在单词之间使用正则表达式\B-\B匹配.使用在另一方面相匹配的中和.-color - coded\b-\b-nine-digitpass-key
为什么我们用第一个例子\b来分离cat和在第二个用途\B中分开-?使用\b在第二个例子中做的是什么前面却反其道而行之.
请向我解释一下这个区别.
编辑:此外,任何人都可以用一个新的例子来解释?
我想在RegExp中匹配X和Y之间的数字.这可能吗?
([0-9] +)将匹配任何数字,我怎么能匹配一个数字,例如,110和2234?
我正在使用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)
我浏览了整个网络,我很惊讶它看起来似乎没有人在过去解决过这个问题.这是一个难题......
谢谢你的时间.
我一直在寻找到最近的正则表达式,并盘算了一下,?运营商使*,+或?懒惰.我的问题是它是如何做到的?*?例如它是一个特殊的运算符,还是?对它有影响*?换句话说,没有正则表达式识别*?为一个运营商本身,还是正则表达式识别*?为两个独立的运营商*和??如果*?是被识别为两个独立运算符的情况,那么?影响*它如何变得懒惰.如果?意味着它*是可选的,那么这*不应该意味着它根本不存在.如果是,那么在声明中.*?不会正则表达式匹配单独的字母和整个字符串而不是较短的字符串?请解释一下,我迫切希望了解.非常感谢.
我想使用正则表达式的文本框只允许1-5000之间的数字
我尝试了以下但它不会工作:
@"/^(?:1|5000|-[1-9]\d?)$/
Run Code Online (Sandbox Code Playgroud) 我需要制作一个正则表达式来验证 17-120 之间的年龄,包括(17 和 120)
我试过这个
^(100|[1-9][7-9][0-9]?)$
我知道这不好,但我不明白该怎么做
我需要在我的表单中使用模式属性提交年龄
只有数字允许
regex ×10
c# ×2
function ×1
html ×1
integer ×1
operators ×1
performance ×1
php ×1
quantifiers ×1
range ×1
regex-group ×1