用户键入包含以下正则表达式的字符串:'I have the string "(.*)"'
或者
^{pr2}$
我需要将每个匹配方括号的出现作为用户类型计数,因此上面的文本将为第一个文本返回count1,为第二个文本返回2。另一方面,没有匹配的括号不应计算在内:'I am in the middle of writing this ('
我也希望避免计算嵌套括号。
由于这段代码将在特定情况下在vim中的每次击键时执行(它是UltiSnips代码段的一部分,所以当我创建代码段并输入给定的占位符时,这个count函数应该计算我在每个新字符上键入的内容),所以它需要很快;)
总结要求:计算括号对
没有匹配的括号不要计数
不要计算嵌套方括号
快速计数;)
它可以工作,但不幸的是它也计算了内括号,所以我需要调整它更多。在
下面是另一种只计算外部括号的解决方案:def fb(string, c=0):
left_bracket = string.find("(")
if left_bracket > -1:
string = string[left_bracket + 1:]
right_bracket = string.find(")")
if right_bracket > -1:
if string[:right_bracket].find("(") == -1:
c += 1
string = string[right_bracket + 1:]
return fb(string, c)
else:
return c