这可能已经被问到了,但我似乎找不到任何重复,所以我会问自己,希望我不会被标记。
我正在使用状态机构建一个小解析器,只要检测到{
,就会切换到子解析器。我只希望我的正则表达式首次出现在我目前的位置。基本上我的正则表达式是keymatch = re.compile(r'^\{([A-Za-z0-9])\}')
,我使用字符串this {is} a {test} string
。
问题是我在运行keymatch.match(myString, pos)
时无法匹配我已经尝试使用keymatch.search(myString, pos)
并找到相同的结果。
对于记录,pos指向正确的位置,硬编码值也没有返回,而我的正则表达式中没有位置或前导^
返回所有匹配,我不想要因为我是怎样的逐个字符地重建字符串。另外,如果在pos处找不到匹配项,我希望我的匹配对象为none
来触发错误,而不是仅仅向它发现它找到的字符串。
我的方法有什么明显错误,如果有,我该怎么做才能解决它?
答案 0 :(得分:1)
^
表示字符串的开头。所以它只搜索第一个字符是一个开放括号。您可以删除^