重情义的米饭 · 湖南对陈华军、周雄飞、胡建华、王选祥、陈泽吕 ...· 1 月前 · |
开心的烤土司 · Legendre ...· 3 月前 · |
俊秀的熊猫 · “昆科贷”授信总额超10亿元 ...· 1 年前 · |
失落的棒棒糖 · 《养鬼吃人5:地狱》百度云网盘下载[MP4/ ...· 1 年前 · |
爱跑步的松鼠 · 这季《新说唱》的冠军,或许会在这些老面孔当中 ...· 1 年前 · |
在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