正则表达式匹配行尾大写M的问题求助
解决思路:匹配行尾大写M的正则方法
首先得纠正一个关键误区:你用的[^M]其实是匹配任何不是大写M的字符,这和你想要匹配M的需求完全相反,所以肯定不会生效啦😉
下面给你几种针对不同场景的正确解决方案:
1. 直接匹配行尾的大写M
如果只是想精准定位每一行末尾的那个M,可以用正则的行尾锚点$来锁定位置,表达式写为:
M$
M:匹配大写字母M本身$:行尾锚点,确保匹配的M是一行的最后一个字符
2. 匹配整行(验证以M结尾的时间格式)
如果需要验证整个时间字符串是否符合「以M结尾」的格式,或者匹配完整的时间行,可以用更完整的正则:
^\d{2}/\d{2}/\d{4} \d{1,2}:\d{2}:\d{2} [AP]M$
各部分解释:
^:行首锚点,确保从行开头开始匹配\d{2}/\d{2}/\d{4}:匹配日期部分(如11/30/2017)\d{1,2}:\d{2}:\d{2}:匹配时间部分(如6:05:34)[AP]M:匹配AM或PM的结尾格式$:行尾锚点,确保整行以M结束
3. 单独提取行尾的M
如果需要把行尾的M单独捕获出来,可以用捕获组,表达式写成:
(M)$
这样在匹配结果里就能直接拿到这个行尾的M字符了。
最后再划个重点:正则里的[^...]是否定字符集,作用是排除括号内的字符,以后可别把它和匹配目标字符的用法搞混啦~
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

