社区首页 >问答首页 >Regex -匹配0或1次

Regex -匹配0或1次
EN

Stack Overflow用户
提问于 2015-08-20 08:15:48
回答 2查看 3.7K关注 0票数 3

我有以下命令:

代码语言:javascript
代码运行次数:0
复制
var re = /^(post|merge|delete) (\/WcfDataService1\.svc\/)(.*) HTTP\/1.1$[\s\S]*?(^{.+\}$)/im

这用于匹配批处理请求中的各种项:

代码语言:javascript
代码运行次数:0
复制
--batchitems
Content-Type: application/http
Content-Transfer-Encoding: binary

POST /WcfDataService1.svc/Orders(123) HTTP/1.1

{"OrderID":"x58"}
  • 第一组:类型(POST/合并/删除)
  • 第二组: /WcfDataService1.svc/
  • 第三组: WcfDataService1.svc之后出现的任何内容,在本例中: Orders(123)
  • 第四组: JSON字符串

这个很好用!执行re.match(str);时,将返回一个数组,如下所示:

代码语言:javascript
代码运行次数:0
复制
[
    'POST',
    '/WcfDataService1.svc/',
    'Orders(123)',
    '{"OrderID":"x58"}'
]

但是,我希望JSON字符串在regex中是可选的,因为它并不总是存在的;例如:

代码语言:javascript
代码运行次数:0
复制
--batchitems
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE /WcfDataService1.svc/Orders(123) HTTP/1.1

// EOL here

但是我的正则表达式在这里失败了,因为它试图匹配花括号,却找不到它们,所以整个正则表达式都失败了。

如何使(^{.+\}$)可选(出现0或1次)?我试过(^{.+\}$){0,1},但不起作用。

有什么想法吗?

见:https://regex101.com/r/pT3fG0/2https://regex101.com/r/nO8xZ7/1

EN

回答 2

Stack Overflow用户

发布于 2015-08-20 08:27:52

编辑1

使用?使json部件可选,如下所示:

代码语言:javascript
代码运行次数:0
复制
^(post|merge|delete) (\/WcfDataService1\.svc\/)(.*) HTTP\/1.1$(?:[\s]*?(^{.+\}$))?

演示

票数 3
EN

Stack Overflow用户

发布于 2015-08-20 08:40:02

另一种备选办法可以是:

代码语言:javascript
代码运行次数:0
复制
(^(post|merge|delete)\s(\/WcfDataService1\.svc\/)(.*)(HTTP\/1\.1)([\s]*)($|^{.*}))

这是你所希望的。你可以看到它,这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32123329

复制
相关文章
掌握 Python RegEx:深入探讨模式匹配
正则表达式通常缩写为 regex,是处理文本的有效工具。本质上,它们由一系列建立搜索模式的字符组成。该模式可用于广泛的字符串操作,包括匹配模式、替换文本和分割字符串。
数据科学工厂
2023/08/10
2310
掌握 Python RegEx:深入探讨模式匹配
C:基于GNU regex(regex.h)regexec实现正则表达式多次匹配
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。 不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree. 我们知道 regexec 不能通过一次调用找到字符串中所有满足匹配条件的字符串位置,所以需要通过步进偏移的方式循环执行regexec才能把字符串中所有满足条件的匹配找出来, 每一次匹配的起始偏移是上一次匹配到的字符串结束偏移。
10km
2021/11/17
2.4K1
mongodb 字符串查找匹配中$regex的用法
官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive
庞小明
2018/12/10
6.1K0
MongoDB模糊查询($regex查询、正则表达式匹配查询)
这里的 i 就是指最上面语法中的那个 options 的值 i 是其的一个选项,代表忽略大小写的意思。 这里 options 还有以下几个选项供使用:
全栈程序员站长
2022/08/23
13.6K0
Java异或什么意思_0与0异或
a=a^b; 1001^1011=0010 b=b^a; 1011^0010=1001 a=a^b; 0010^1001=1011
全栈程序员站长
2022/11/09
1.2K0
Java异或什么意思_0与0异或
python regex replace
正则匹配-直接内容替换 s = 'dsoheoifsdfscoopaldshfowefcoopasdfjkl;' ss = s.replace('coop','###') print(s,'\n',ss) dsoheoifsdfscoopaldshfowefcoopasdfjkl; dsoheoifsdfs###aldshfowef###asdfjkl; import re regex = re.compile(r'coop') # 正则匹配替换 regex.sub('$$$$$','sdlaf
py3study
2020/01/08
2.4K0
[Dream Big, Think Big, Achieve Big!] Regex Matching Problems 2
包子IT面试培训 助你拿到理想的offer! 有问题,问包子!Got question? Ask Baozi! 接着上一轮关于regex的博客讨论,下面我们讨论一下另一道比较常见的regular e
包子面试培训
2018/04/20
8690
boost::string or boost::regex
当中用蓝色标记出的部分(layout, local_size_x, local_size_y, local_size_z, in)为keyword,斜体字部分(a, b, c)为数据类型为unsigned int的数字,请编写一个函数,用于从文件里抽取出a, b, c的值。当中文件名称为输入參数,该函数的返回值是抽取得到的a,b,c三个值。
全栈程序员站长
2022/07/08
2.1K0
Python字符串开头或末尾匹配
当你需要通过指定的文本模式去检查字符串的开头或者结尾的时候,比如文件名后缀,URL Scheme等等。
后场技术
2020/09/03
1.8K0
从零开始匹配vim(0)——vimscript 简介
通过之前一系列的文章,相信各位小伙伴应该已经对vim产生了浓厚的兴趣,可能不少小伙伴通过慢慢的使用变的跟我一样,离开vim就不会写代码了。如果你希望继续长时间使用vim,甚至将vim作为主要的代码编辑器,那么花一定的时间来学习vim的配置是很有用的。如果你只是因为 linux 平台默认安装了 vi/vim ,平时又主要用它改改匹配文件,临时用用,那么还是赶紧退出这个文章,免得耽误时间吧。
Masimaro
2022/07/09
7570
从零开始匹配vim(0)——vimscript 简介
C: GNU regex library (regex.h)正则表达式调用示例
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。 我也是最近才接触这个相对于C++/Java实现来说非常简陋,勉强够用的正则表达式库。 不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree, 以下以完整源码的方式调用以上函数完成对GNU regex library的基本测试。
10km
2021/11/15
1.1K0
gcc报错:terminate called after throwing an instance of ‘std::regex_error‘ what(): regex
mkdir build …/./configure make & make install
花狗Fdog
2022/05/09
2.2K0
hive regex insert join group cli
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118336.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/13
8210
或关系模糊匹配求均值(pandas插播版7)
上期用Excel的复杂函数解决了或关系模糊匹配求均值。本期和大家分享一下如何使用Python的Pandas解决该问题。 郑重说明:本期只是分享解决方案,且pandas主要场景不在此,pandas是为了
用户1332619
2018/03/08
1.6K0
或关系模糊匹配求均值(pandas插播版7)
浅谈C++的regex库
第四届CCCC团体程序设计天梯赛结束之后,知乎热榜出现了这个问题“如何评价第四届CCCC团体程序设计天梯赛”,这里面有些回答真的看得我笑出声,比如这个简简单单的回答:“第四届CCCC字符串大赛”。
喜欢ctrl的cxk
2019/11/07
1.2K0
MSVC下使用gnu regex(正则表达式C语言接口regex.h)
最近我的一个跨平台项目遇到了一个问题:需要在MSVC下调用linux下才有正则表达式C接口(regex.h)。
10km
2021/11/10
9560
Java String字符串补0或空格
package cn.com.songjy; import java.text.NumberFormat; //Java 中给数字左边补0publicclassNumberFormatTest{ publicstaticvoidmain(String[] args){ // 待测试数据int i = 1; // 得到一个NumberFormat的实例 NumberFormat nf = NumberFormat.getInstance(); // 设置是否使用分组 nf.setGroupingUsed(false); // 设置最大整数位数 nf.setMaximumIntegerDigits(4); // 设置最小整数位数 nf.setMinimumIntegerDigits(4); // 输出测试语句 System.out.println(nf.format(i)); } } /** * Java里数字转字符串前面自动补0的实现。 * */publicclassTestStringFormat{ publicstaticvoidmain(String[] args){ int youNumber = 1; // 0 代表前面补充0 // 4 代表长度为4 // d 代表参数为正数型 String str = String.format("%04d", youNumber); System.out.println(str); // 0001 } } //流水号加1后返回,流水号长度为4privatestaticfinal String STR_FORMAT = "0000"; publicstatic String haoAddOne_2(String liuShuiHao){ Integer intHao = Integer.parseInt(liuShuiHao); intHao++; DecimalFormat df = new DecimalFormat(STR_FORMAT); return df.format(intHao); }
用户7718188
2021/09/22
2.6K0
或关系模糊匹配求均值(虐心升级版)
上期和大家分享了如何使用数组函数实现或关系求均值。 本期和大家分享进一步的应用,或关系模糊匹配求均值。 如果没看上期直接看本期会比较痛苦,来个传送门! 点击我可以飞!!! B列中是我随便构建的一列,我
用户1332619
2018/03/08
9180
或关系模糊匹配求均值(虐心升级版)
异或满足结合律吗_异或1⊕0的结果是
A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N 增大 1。 Q l r x:询问操作,你需要找到一个位置 p,满足 l≤p≤r,使得:a[p] xor a[p+1] xor … xor a[N] xor x 最大,输出这个最大值。 输入格式 第一行包含两个整数 N,M,含义如问题描述所示。
全栈程序员站长
2022/09/22
2420
在Linux中设置RAID 10或1 + 0(嵌套)
RAID 10是结合RAID 0和RAID 1,形成了RAID 10。要设置RAID 10,我们至少需要4个磁盘。 在我们以前的文章中,我们已经了解了如何设置RAID 0和RAID 1,最少2个磁盘。
用户2323866
2021/06/18
1.9K0

相似问题

regex匹配0);

16

Java Regex匹配0次或一次

36

regex for 0或更多

13

如何匹配或匹配Regex

25

Regex匹配或sembol匹配

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文