首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将2个正则表达式规则合并为一个

将2个正则表达式规则合并为一个
EN

Stack Overflow用户
提问于 2013-06-29 05:04:18
回答 4查看 88关注 0票数 1

在regex中,是否有特殊字符可以加入规则组

我需要匹配每一行的前2个字符和最后2个数字

这与前2个字符匹配

代码语言:javascript
运行
复制
(^..) 

这与最后两个数字相匹配

代码语言:javascript
运行
复制
([0-9][0-9]$)

如何将这两条规则结合起来?我试过了,但没有成功

代码语言:javascript
运行
复制
(^..)([0-9][0-9]$)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-29 05:07:16

代码语言:javascript
运行
复制
(^..).*([0-9][0-9]$)

您可以使用.*修饰符来匹配“介于两者之间的一切”

票数 0
EN

Stack Overflow用户

发布于 2013-06-29 05:05:53

好的,你也需要匹配中间的部分。只允许任意多个任意字符:

代码语言:javascript
运行
复制
(^..).*([0-9][0-9]$)

请注意,在大多数情况下,.与换行符不匹配。如果您的输入可能包含换行符,请使用s (“单行”,有时是"dotall")修饰符来更改.的含义。否则(即在JavaScript中)使用[\s\S]*

还请注意,仅连续使用两个正则表达式可能会更容易、更具可读性和效率:

代码语言:javascript
运行
复制
^..
[0-9][0-9]$

不需要分组/捕获和重复。

编辑:

请注意,这两个并不是完全等价的。第一个至少需要四个字符(因为[0-9][0-9]无法再次匹配..匹配的两个字符),而第二个可能只包含两个数字(在这种情况下,..将匹配这些相同的数字)。这取决于你在寻找哪种语义。只使用一个正则表达式但相当于两个正则表达式解决方案的第三个解决方案将使用lookahead:

代码语言:javascript
运行
复制
^(?=(..))(?=.*([0-9][0-9])$)

这将允许您匹配x12,第一个捕获是x1,第二个捕获是12

感谢pointing this outAlan Moore

票数 4
EN

Stack Overflow用户

发布于 2013-06-29 05:06:24

您需要添加anything goes here -也称为.*

代码语言:javascript
运行
复制
(^..).*([0-9][0-9]$)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17373650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档