![]() |
近视的橙子 · 【学青会】泳将陈欣夺冠,广州体育代表团收获10金· 1 月前 · |
![]() |
眼睛小的牛腩 · “土豪金”百元大钞问世 ...· 10 月前 · |
![]() |
英姿勃勃的羽毛球 · 说唱歌手孟� - 搜狗图片搜索· 2 年前 · |
![]() |
飘逸的牛肉面 · 指南:黑苹果进入恢复模式,解决“安装所选更新 ...· 2 年前 · |
![]() |
鬼畜的钢笔 · 燃油版价格买混动电四驱 坦克500 ...· 2 年前 · |
在regex中,是否有特殊字符可以加入规则组
我需要匹配每一行的前2个字符和最后2个数字
这与前2个字符匹配
(^..)
这与最后两个数字相匹配
([0-9][0-9]$)
如何将这两条规则结合起来?我试过了,但没有成功
(^..)([0-9][0-9]$)
发布于 2013-06-29 05:07:16
(^..).*([0-9][0-9]$)
您可以使用.*修饰符来匹配“介于两者之间的一切”
发布于 2013-06-29 05:05:53
好的,你也需要匹配中间的部分。只允许任意多个任意字符:
(^..).*([0-9][0-9]$)
请注意,在大多数情况下,
.
与换行符不匹配。如果您的输入可能包含换行符,请使用
s
(“单行”,有时是"dotall")修饰符来更改
.
的含义。否则(即在JavaScript中)使用
[\s\S]*
。
还请注意,仅连续使用两个正则表达式可能会更容易、更具可读性和效率:
^..
[0-9][0-9]$
不需要分组/捕获和重复。
编辑:
请注意,这两个并不是完全等价的。第一个至少需要四个字符(因为
[0-9][0-9]
无法再次匹配
..
匹配的两个字符),而第二个可能只包含两个数字(在这种情况下,
..
将匹配这些相同的数字)。这取决于你在寻找哪种语义。只使用一个正则表达式但相当于两个正则表达式解决方案的第三个解决方案将使用lookahead:
^(?=(..))(?=.*([0-9][0-9])$)
这将允许您匹配
x12
,第一个捕获是
x1
,第二个捕获是
12
。
感谢 pointing this out 的 Alan Moore 。
发布于 2013-06-29 05:06:24
您需要添加
anything goes here
-也称为.*
(^..).*([0-9][0-9]$)
https://stackoverflow.com/questions/17373650
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287