前几天我坐着一个正则表达式问题。最终我用不同的方式解决了它,没有正则表达式,但我仍然想知道你是怎么做的:)
我遇到的问题是通过自动脚本运行svn update,我想检测冲突。使用或不使用正则表达式执行此操作是微不足道的,但它让我想到了一个更加模糊的问题:如何在空白的固定长度字段内完全匹配一个字符?
例如,假设我们想在6字节宽的字段内匹配“C”:
"C " MATCH " C " MATCH " C C " NO MATCH " M " NO MATCH " " NO MATCH "C " NO MATCH (7 characters, not 6) " C " NO MATCH (5 characters, not 6)
答案 0 :(得分:7)
我知道回答你自己的问题是不对的,但我基本上把你的答案合并了......请不要火焰:)
^(?=.{6}$) *C *$
编辑: 更换。 Tomalak的反应低于[C],速度提高了约4-5%左右
^(?=[ C]{6}$) *C *$
答案 1 :(得分:5)
^(?=[ C]{6}$) *C(?! *C)
说明:
^ # start-of-string (?=[ C]{6}$) # followed by exactly 6 times " " or "C" and the end-of-string *C # any number of spaces and a "C" (?! *C) # not followed by another C anywhere (negative lookahead)
注意:
^(?=…{6}$)
构造可以在任何想要测量字符串长度的地方使用,但实际上并不匹配。$
,但这样做并没有什么坏处。答案 2 :(得分:4)
^[^C]*C[^C]*$
但这不会验证字符串的长度。