Get the App
SLTechnology News&Howtos  ›  Development  › 

How to realize C # backtracking and non-backtracking

Shulou Source: shulou.com Published: 2022-06-02 08:38:39 10月28日 Update

This article mainly introduces "how to realize C# backtracking and non-backtracking". In daily operation, I believe many people have doubts about how to realize C# backtracking and non-backtracking. I hope it will be helpful to answer the question of "how to realize C# backtracking and non-backtracking". Next, please follow the editor to study!

Use "(? >...)" Method to make a non-retroactive declaration. Due to the greedy nature of the regular expression engine, in some cases it will backtrack to get a match

Take a look at the following examples of backtracking and non-backtracking of C# regular expressions:

String x = "Live for nothing,die for something"; Regex R1 = new Regex (@ ". * thing,"); if (r1.IsMatch (x)) {Console.WriteLine ("match:" + r1.Match (x) .value); / / output: Live for nothing,} Regex R2 = new Regex (@ "(? >. *) thing,") If (r2.IsMatch (x)) / / does not match {Console.WriteLine ("match:" + r2.Match (x) .value);} / in R1, ". *" because of its greedy nature, it will match all the way to the string's *, / / then match "thing", but fails at ",", / / at this time the engine will backtrack and match successfully at "thing,". / / in R2, the entire expression matching failed because non-backtracking was enforced. At this point, the study of "how to achieve C# backtracking and non-backtracking" is over. I hope to be able to solve your doubts. The collocation of theory and practice can better help you learn, go and try it! If you want to continue to learn more related knowledge, please continue to follow the website, the editor will continue to work hard to bring you more practical articles!

Tags: Caching learning expressions greed engines more regularities features help utility success next characters strings situations articles ways methods theories knowledge Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Apple Redmi Microsoft Xiaomi Shulou Information