To use or not to use regular expressions?

前端 未结 5 1818
再見小時候
再見小時候 2020-11-27 18:00

I just asked this question about using a regular expression to allow numbers between -90.0 and +90.0. I got some answers on how to implement the regular expression, but mos

相关标签:
5条回答
  • 2020-11-27 18:31

    Without meaning to be circular or obtuse, you should use regular expressions when you have a string which contains information structured in a regular language, and you want to turn this string into an object model.

    0 讨论(0)
  • 2020-11-27 18:34

    Regular expressions are a text processing tool for character-based tests. More formally, regular expressions are good at handling regular languages and bad at almost anything else.

    In practice, this means that regular expressions are not well suited for tasks that require discovering meaning (semantics) in text that goes beyond the character level. This would require a full-blown parser.

    In your particular case: recognizing a number in a text is an exercise that regular expressions are good at (decimal numbers can be trivially described using a regular language). This works on the character level.

    But doing more advanced stuff with the number that requires knowledge of its numerical value (i.e. its semantics) requires interpretation. Regular expressions are bad at this. So finding a number in text is easy. Finding a number in text that is greater than 11 but smaller than 1004 (or that is divisible by 3) is hard: it requires recognizing the meaning of the number.

    0 讨论(0)
  • 2020-11-27 18:46

    The answer is straight forward:

    If you can solve your problem without regular expressions (just by string functions), you don't use regular expressions. As it was said in one book I've read: regular expressions are violence over computer.

    If it's to complicated to use language string functions, use regular expressions.

    0 讨论(0)
  • 2020-11-27 18:54

    I would say that regex expressions are most effective on Strings. For other data types, manipulations of that data type will usually be more intuitive and provide better results.

    For example, if you know that you're dealing with DateTime, then you can use the Parse and TryParse methods will the different formats and it will usually be more reliable than your own regex expressions.

    In your example, you are dealing with numbers so deal with them accordingly.

    Regex is very powerful, but it isn't the easiest code to read and to debug. When another reliable solution is at hand, you should probably go for that.

    0 讨论(0)
  • 2020-11-27 18:54

    Basic use-case for RegEx :-

    1. You need "Key Value Pairs" - Both Key and Values are embedded within other noisy text - cant be accessed or isolated otherwise.

    2. You need to automate extraction of these values by looping over multiple documents.

    3. Number and combination of Key Value pairs maybe discovered as you progress parsing through text.

    0 讨论(0)
提交回复
热议问题