考虑以下两种情况,其中要测试的字符串将仅包含字符' a',' t'' g'和' c'任何组合,可以是任意长度。它可能只有'例如。
现在我知道如何构建一个基本的正则表达式来测试这两种情况,但我想确保搜索得到优化并且不会浪费不必要的迭代。在上面的第二点中,agatcttgcgt应该在测试第三个字符后立即终止,因为它会破坏连续的规则。
优化正则表达式的任何帮助都会有所帮助。此外,不是主要问题,但我怎样才能看到搜索的执行方式(迭代次数等)?
答案 0 :(得分:3)
如果性能至关重要,您可能需要考虑非正则表达式解决方案。例如,使用string.Contains
可以轻松解决您的第一个要求。
正则表达式通常以线性方式从左到右扫描其输入,查看每个字符,直到找到匹配为止,如果有回溯,可能会多次查看字符。另一方面,存在一些高级string searching algorithms,可以确定子串的存在与否,而不必检查字符串中的所有字符。例如,要搜索aaaaa
,您只需检查每五个字符,直到找到a
。
此外,不是主要问题,但我怎样才能看到搜索的执行方式(迭代次数等)?
您可以使用RegexBuddy调试正则表达式并查看需要多少步骤: