精华内容
下载资源
问答
  • C++用正则表达式,以及十六进制字符串转十进制数字问题。

    能把我急死。为什么qt里面用起来那么方便的东西回到C++感觉好复杂的样子

    	const std:: regex hexPattern("^[0-9a-fA-F]{6}$");//定义六进制颜色的正则表达式
    	std::smatch hexMatch; 
    	std::string hex_color = strings[code.StrTranslate(code.SplitCode(code_line,1))];
    	if(! std::regex_match (hex_color, hexPattern ))
    	{
    		cout<<"16进制颜色格式错误,请输入形如FF8000的六位16进制数(不区分大小写)!"<<endl;
    		error_message.push_back("16进制颜色格式错误,请输入形如FF8000的六位16进制数(不区分大小写)!");
    		hex_color = "FF8000";
    	}
    	//cout<<hex_color;
    	int color[3];
    	char * str;
    	//cout<<hex_color[0];
    	for(int i=0; i<5; i+=2)
    	{		
    		std::string temp ="0x"+hex_color.substr(i,2);		
    		//cout<<temp<<endl;
    		color[i/2]  = (int)strtol(temp.c_str(), &str, 16);
    	}
    	//cout<<color[0]<<endl<<color[1]<<endl<<color[2]<<endl;

    展开全文
  • <p>I need to convert numbers to have .00 after them, but only if the number is an integer, or it has just 1 number after the decimal point, like so: <pre><code>1.4 = 1.40 45 = 45.00 ...
  • <p>This question already has an answer here: ...<p>Is there any way to do a regex that cuts off a number at a certain point without rounding (simply drops the digits?) say after 4 digits.......
  • 正则表达式

    2020-10-31 15:38:05
    正则表达式是对一组字符串描述,通过这种描述可以匹配到我们想要字符串,正则表达式通常和一些函数配合使用来对字符串进行查找、修改、删除等功能。 001x00 正则表达式语法 正则表达式由2部分构成:普通字符...

    正则表达式

    000x00 正则表达式介绍

    正则表达式是对一组字符串的描述,通过这种描述可以匹配到我们想要的字符串,正则表达式通常和一些函数配合使用来对字符串进行查找、修改、删除等功能。

    001x00 正则表达式语法

    正则表达式由2部分构成:普通字符和元字符。
    普通字符没有什么特殊含义,就代表着字符本身;元字符则是描述了一组符合条件的字符,例如元字符“ \d ”就表示匹配一个0-9的数字,它可以用“ [0-9] ”来代替。

    001x01 常用元字符介绍

    • \d :匹配任意一个十进制数字,等价于 [0-9]

    • \D:匹配除了任意一个十进制数字以外的字符,等价于 [^0-9]

    • \s:匹配任意一个空白字符,例如换行符、分页符、制表符

    • \S:匹配除了任意一个空白字符以外的字符

    • \w:匹配任意一个字母、数字或下划线

    • \W:匹配除了任意一个字母、数字、或下划线以外的字符

    • . :匹配除了换行符以外的任意一个字符

    • * :匹配0次、1次或多次(任意次)其前面的字符

    • +:匹配1次或多次其前面的字符

    • ?:匹配0次或1次其前面的字符

    • {n}:表示其前面的字符正好出现n次

    • {n,}:表示其前面的字符至少出现n次

    • {n,m}:表示其前面的字符出现n-m次

    • ^或\A:表示一个字符串的开始

    • $或\Z:表示一个字符串的结束

    • |:匹配两个或者多个模式

    • []:匹配方括号中的任意一个字符

    • [^]:匹配除了方括号中字符的任意一个字符

    • ():括号中的内容可以作为一个小的正则表达式被匹配。
            -例如正则表达式/t.st/仅仅可以匹配到字符串“test”,而正则表达式/t(.)st/可以匹配到字符串“test”和"e"。

    • \数字:和括号配合使用,写在括号后面,表示匹配括号所匹配的内容。假设一个正则表达式为/t(e)st\1/,则正则表达式匹配的内容为字符串“teste”

    002x00 正则表达式定界符

    正则表达式要写在定界符之中,就如同php中的字符串要被引号包裹。常用的定界符为“ / ",除了字母、数字、反斜杠()以外的字符都可以作为正则表达式的定界符。

    003x00 正则表达式模式修正符

    模式修正符是对正则匹配范围的扩大,写在定界符之后。
    例如:

    正则表达式:/text/               作用:仅匹配字符串“text”(区分大小写)。
    正则表达式/text/i                  作用:匹配字符串"text"(区分大小写)

    003x01 常用的模式修正符

    • i:不区分大小写
    • u:不进行贪婪匹配
    • s:元字符" . "可以匹配到所有的字符,包括换行符。
    • m:多行匹配。使用条件:1. 目标字符串包括换行符(\n)  2.正则表达式中出现^或$
    展开全文
  • 本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中第2章,第2.12节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区...一个googol(一个100位的十进制整数)。 一个3...

    本节书摘来自异步社区《正则表达式经典实例(第2版)》一书中的第2章,第2.12节,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.12 把正则表达式的一部分重复多次

    问题描述
    创建正则表达式来匹配下列种类的数字。

    • 一个googol(一个100位的十进制整数)。
    • 一个32位的十六进制整数。
    • 一个32位的十六进制整数,带有一个可选的h后缀。
    • 一个浮点数,包含可选的整数部分、必需的小数部分和可选的指数部分。每个部分都允许任意多个数字。
      解决方案

    Googol

    \b\d{100}\b
    正则选项:无
    正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
    

    十六进制整数

    \b[a-f0-9]{1,8}\b
    正则选项:不区分大小写
    正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby

    带可选后缀的十六进制整数

    \b[a-f0-9]{1,8}h?\b
    正则选项:不区分大小写
    正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
    

    浮点数

    \d*\.\d+(e\d+)?
    正则选项:不区分大小写
    正则流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
    

    讨论
    固定次数重复
    量词‹{n}›用来重复之前的正则表达式记号n次,其中n是一个正整数。在‹bd{100}b›中的‹d{100}›会匹配一个包含100个数字的字符串。你也可以通过把‹d›敲100遍来达到同样的效果。

    ‹{1}›重复之前的记号一次,这样和没有任何量词是等价的。‹ab{1}c›与‹abc›是相同的正则表达式。

    ‹{0}›重复之前的记号0次,实际上也就是把它从正则表达式中删除。‹ab{0}c›与‹ac›是相同的正则表达式。

    可变次数重复
    对于可变次数重复,我们使用量词‹{n,m}›,其中n是一个正整数,并且m大于n。‹b[a-f0-9]{1,8}b›匹配一个包含1~8个数字的十六进制整数。对于可变次数重复,尝试重复的顺序就变得至关重要。这会在实例2.13中详细讲解。

    如果n和m是相等的,那么我们就会得到固定次数的重复。‹bd{100,100}b›与‹bd{100}b›是相同的正则表达式。

    无限次数重复
    量词‹{n,}›支持无限次数重复,其中n是一个正整数。实际上,无限次数重复是一个没有上限的可变次数重复。

    ‹d{1,}›匹配至少一个数字,‹d+›也一样。在一个不是量词的正则表达式记号之后添加一个加号,意味着“一次或多次”。实例2.13会讲解在量词之后跟加号的含义。

    ‹d{0,}›匹配至少0个数字,‹d*›也一样。星号永远都意味着“0次或多次”。除了支持无限次数重复之外,‹{0,}›和星号还把之前的记号变成了可选的。

    设置可选内容
    如果我们使用可变次数重复,并把n设置为0,事实上我们就是把在该量词之前的记号变成了可选的。‹h{0,1}›匹配一次‹h›或者根本不存在。如果不存在h,那么‹h{0,1}›会得到一个长度为0的匹配。如果你使用‹h{0,1}›来作为一个正则表达式,那么它会在目标文本中每个不是h的字符之前找到一个长度为0的匹配。每个h则会成功匹配一个字符(也就是h)。

    ‹h?›与‹h(0,1)›的效果是一样的。在一个合法和完整的非量词正则表达式记号之后的问号意味着“0或1次”。下一个实例会解释在量词之后的问号的含义。

    screenshot在一个起始括号之后使用问号或者任意其他量词,都是一个语法错误。Perl和沿用它的流派利用它为正则语法添加“Perl扩展”。前面的实例讲解了非捕获分组和命名捕获分组,它们都使用了在起始括号之后的问号来作为其语法的一部分。这些问号根本不是量词,它们只是属于非捕获分组和命名捕获分组的语法中的一部分。随后的实例中会讲解使用‹(?›语法的更多不同用途的分组。
    重复分组
    如果在分组的结束括号之后放一个量词的话,那么整个分组就会重复。‹(?:abc){3}›与‹abcabcabc›是相同的。

    量词还可以进行嵌套。‹(ed+)?›匹配一个e之后跟着至少一个数字,或者是一个长度为0的匹配。在我们的浮点数的正则表达式中,这是可选的指数部分。

    捕获分组也可以重复。在实例2.9中解释过,分组匹配在每次引擎退出该分组的时候捕获文本,并会覆盖该分组在之前匹配的任何文本。‹(dd){1,3}›会匹配一个包含2个、4个或6个数字的字符串。引擎会退出该分组3次。当这个正则表达式匹配到123456的时候,捕获分组中保存的是56,因为该分组的最后一次重复存储的是56。另外两次分组匹配的文本,也就是12和34,是无法获取的。

    ‹(dd){3}›会与‹dddd(dd)›捕获相同的文本。如果想要用捕获分组来捕获所有2个、4个或6个字符,而不只是最后2个,就必须用捕获分组包围量词,而不只是重复该捕获分组:‹((?:dd){1,3})›。这里我们用非捕获分组取代了捕获分组的分组功能。我们也可以使用两个捕获分组:‹((dd){1,3})›。在后一个正则表达式匹配123456的时候,‹1›中保存的是123456,而在‹2›中则保存了56。

    只有.NET的正则表达式引擎才支持获取捕获分组的所有重复捕获的文本。如果直接查找该分组的Value属性,你会得到字符串56,就像所有其他正则表达式引擎一样。在正则表达式中的反向引用和替代文本也会代入56,但是如果使用分组的CaptureCollection,你就会得到一个栈,其中包含56、34和12。

    展开全文
  • python处理正则表达式

    2020-02-13 21:02:24
    较常用的正则表达式有: 正则表达式 匹配对象 普通字符 匹配对应的字符 \n 匹配换行符 \t 匹配制表符 \d 匹配十进制数字 \D 匹配除了十进制数字的其他字符 \w 匹配字母,数字,下划线 \W 匹配...

    一.正则表达式
    正则表达式是一个用特殊符号表示的字符序列,用来检查一个字符串是否与某种字符串模式匹配。

    较常用的正则表达式有:

    正则表达式 匹配对象
    普通字符 匹配对应的字符
    \n 匹配换行符
    \t 匹配制表符
    \d 匹配十进制数字
    \D 匹配除了十进制数字的其他字符
    \w 匹配字母,数字,下划线
    \W 匹配除了字母,数字,下划线的其他字符
    \s 匹配空白字符(space)
    \S 匹配除了空白字符的其他字符
    [xxxxx] 匹配[]内的任意一个
    [^xxxx] 匹配除了[]内xxxx的任意字符
    . 匹配除换行符外的任意一个
    ^ 匹配字符串起始位置
    $ 匹配字符串结尾位置
    * 前一个字符出现0或1或…次
    ? 前一个字符出现0或1次
    + 前一个字符出现1或多次
    {n} 前一字符恰好出现n次
    {n,} 前一个字符至少出现n次
    {n,m} 前一个字符出现n~m次
    () 模式匹配单元:()内为要提取的内容

    记忆:
    1."\小写"和"\大写"互为否定(例:\d匹配十进制数字,\D则匹配非十进制数字)。
    2.“在原子表[]内,^符号表示取否定意义”(例:[123]匹配123内任意一个,[ ^123]匹配除了123的其他任意字符)

    二.python处理正则表达式
    python处理正则表达式主要通过re模块,处理时import该模块。

    import re
    

    主要介绍re模块中三个较常用的匹配函数(match,search,findall):

    (1)re.match(pattern, string, flags)
    函数的三个参数分别为正则表达式,模式串,可选参数(修改匹配某些规则)
    常用的可选参数及其含义:

    可选参数 含义
    re.I 使匹配忽略大小写
    re.S 使.也可以匹配换行符

    模式起始位置匹配模式串,若从起始位置匹配不成功,match()就返回none[即:匹配成功的位置必须包括起始处]

    print(re.match(r"py","python"))
    #out:<re.Match object; span=(0, 2), match='py'>
    
    print(re.match(r"py","python").span())#span()返回匹配位置索引
    #out:(0, 2)
    
    print(re.match(r"py","python").group())#返回匹配到的对象
    #out:py
    
    print(re.match(r"th","python"))#不能从模式串的起始位置匹配
    #out:None
    
    print(re.match(r"Py","python",re.I))#可选参数使匹配不区分大小写
    #out:<re.Match object; span=(0, 2), match='py'>
    

    正则表达式前的r的含义指此字符串为一普通字符串,即转义字符不使用其转义含义

    (2)re.search(pattern, string, flags)
    函数的形参意义同上,此函数是扫整个模式串进行匹配,不用像match那样必须包括模式串起始位置。
    例子的正则表达式的含义:从y开始,然后后面可以包括零个或多个除了换行符之外的字符(详细看上面表格中各正则表达式的组合含义)。
    (字符串的匹配默认为贪心方式:即如果满足条件则匹配越多越好)。

    print(re.search("y.*","pypypy"))
    #out:<re.Match object; span=(1, 6), match='ypypy'>
    print(re.search("y.*","pypypy").span())
    #out:(1, 6)
    print(re.search("y.*","pypypy").group())
    #out:ypypy
    print(re.search("a.*","pypypy"))
    #out:None
    

    re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

    (3)re.findall(string,start(起始位置索引,可选,默认为0),end(结束位置索引,不包括该位置,可选,默认为len))

    在字符串中找到正则表达式所匹配的所有子串
    注意: match 和 search 是匹配一次 ,findall 匹配所有
    同时,使用findall要先把正则表达式编译出来,这里要用到另一个函数compile(pattern,flag)用来编译字符串(可写入可选参数修改匹配规则)。

    reg=r"py*"#匹配p及连着0个或多个y
    
    print(re.compile(reg).findall("py-Py-pyy"))
    #out:['py', 'pyy']
    
    print(re.compile(reg,re.I).findall("py-Py-pyy"))#匹配不区分大小写
    #out:['py', 'Py', 'pyy']
    
    print(re.compile(reg).findall("py-Py-pyy",1,7))#指定起始及终止位置
    #out:['p']
    

    三.匹配方式
    主要分为两种方式:
    1.贪心/贪婪模式(默认为这种模式)
    此方式即为在满足条件的情况下匹配的字符越多越好。

    reg=r"py*"
    #匹配p及连着0个或多个y,贪婪模式匹配满足条件的最多个y
    
    print(re.compile(reg).findall("py-Py-pyy"))
    #out:['py', 'pyy']
    

    2.精准/懒惰模式:
    (1)*?
    (2)+?

    reg=r"py*?" 
    #此*?组合开启精准模式,原来y可匹配0个或多个,现在匹配最少(即0个就结束)
    
    print(re.compile(reg).findall("py-Py-pyy"))
    #out:['p', 'p']
    

    这两种字符组合在一起后即表示精准模式,即匹配成功就停止。

    展开全文
  • 正则表达式

    2019-11-25 11:40:57
    什么是正则表达式正则表达式就是数据筛选表达式; 原子: 原子是正则表达式中最基本...\d:匹配任意的十进制数; \s:匹配空白字符; \W:匹配\w相反对象,即除了字母,数字下划线之外任意字符; \...
  • 上一篇中我们已经提到了,正则表达式使用 ‘’ 字符来使得一些普通字符拥有特殊能力(例如 \d表示匹配任何十进制数字),或者剥夺一些特殊字符能力(例如 [ 表示匹配左方括号 ‘[’)。这会跟 Python字符串中...
  • 正则表达式匹配IP表达式

    万次阅读 2018-11-14 09:51:47
    这里给大家详细讲解一下一个匹配IP地址的正则表达式,  有关正则方面的知识,会在详细的讲解中提到。  在讲解之前,我先给大家介绍一下,ip地址的生成规则。  IP地址,是由32位数字二进制转为四个十进制的字符...
  • python正则表达式

    2020-11-25 20:39:09
    1.正则表达式 正则表达式是包含文本和特殊字符的字符串,该字符串描述一个可以识别各种字符串的模式。...+匹配1次或多次前面出现的正则表达式 text1='bb9a9333b3b44' pa = re.compile(r'b+') print(pa.
  • PHP 正则表达式

    2020-07-19 21:37:20
    正则表达式语法 描述了一类字符串特征,通过这个特征与特定函数配合,对其他字符串进行匹配、查找、替换及分割操作 定界符 我们一般习惯使用正斜线 ‘/’ 作为定界字符 ...匹配任意一个十进制数字,等价.
  • 这里给大家详细讲解一下一个匹配IP地址的正则表达式,  有关正则方面的知识,会在详细的讲解中提到。  在讲解之前,我先给大家介绍一下,ip地址的生成规则。  IP地址,是由32位数字二进制转为四个十进制的字符串...
  • IP地址通常用“点分十进制”表示成(a.b.c.d)形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。 用正则表达式来...
  • 较常用的正则表达式有:正则表达式匹配对象普通字符匹配对应的字符\n匹配换行符\t匹配制表符\d匹配十进制数字\D匹配除了十进制数字的其他字符\w匹配字母,数字,下划线\W匹配除了字母,数字,下划线的其他字符\s匹配...
  • 再议 js 数字格式之正则表达式 ...不过最近落叶给了我一个正则,让我豁然开朗,比我写的犀利多了,所以今天拿出来简单说一下(只说十进制部分的匹配)。 先看下我之前写的正则:/\d+(?:...
  • Python正则表达式相关

    2018-09-24 17:12:06
    ():分组符,可对分组内正则表达式进行或|操作,且在使用findall()方法时优先返回分组内匹配内容 常用元字符: ^:串首匹配 $:串尾匹配 []:单一字符匹配 [^]:单一字符取反 正则表达式常见集合(通配符): \d...
  • python 正则表达式

    2020-03-29 15:09:54
    普通字符作为原子 import re 正则表达式要运用一个re模块 re.search(pat,string) 第一个参数是正则表达式内容,第二个是字符串内容 运行结果为 非打印字符作为原子 ...\d十进制数字 ^非 元字符!!! .除换行外...
  • IP地址的正则表达式写法

    千次阅读 2017-12-18 10:27:14
    IP地址的正则表达式写法 这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值。 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 ...
  • IP地址的正则表达式写法这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值。 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 正则写法 可...
  • 三、正则表达式

    2020-07-24 18:19:07
    import re #原子:正则表达式中实现匹配基本单位 #元字符:正则表达式中具有特殊含义字符 ...#\D 除了十进制数以外值 #\s 空白字符 #\S 非空白字符 b="136892763900" pat2="1\d\d\d\d\d\d
  • IP地址的正则表达式写法 这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值。 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 ...
  • 正则表达式和re库

    2019-11-30 00:40:29
    . 匹配任何字符(\n除外) *匹配0次或多次前面出现...\d匹配任何的十进制数字 \w匹配任何的字母数字 .匹配.这个字符 re库 re.search()在一个字符串中搜索匹配正则表达式的第一个,返回match对象 re.match()。返回mat...
  • IP地址的正则表达式写法 这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值。 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 ...
  • IP地址的正则表达式

    千次阅读 2018-08-17 15:35:15
    分割, 每段都是0-255之间的十进制数值。 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 正则写法 可合并写法 可合并写法 可合并写法 0-9 一位,只有个位,...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 230
精华内容 92
关键字:

十进制数的正则表达式