How to make a regular expression match based on a condition?

前端 未结 3 758
醉梦人生
醉梦人生 2021-01-26 10:17

I\'m trying to make a conditional regex, I know that there are other posts on stack overflow but there too specific to the problem.


The Question

How can

3条回答
  •  无人及你
    2021-01-26 10:40

    There are no conditionals in Java regexes.

    I want a regex that checks if there are the same amount of regex's at the end as there are in the beginning. The conditional part: If there are x's at the beginning, then check if there are that many at the end, if there are then it is a match.

    This may or may not be solvable. If you want to know if a specific string (or pattern) repeats, that can be done using a back reference; e.g.

       ^(\d+).+\1$
    

    will match a line consisting of an arbitrary number digits, any number of characters, and the same digits matched at the start. The back reference \1 matches the string matched by group 1.

    However if you want the same number of digits at the end as at the start (and that number isn't a constant) then you cannot implement this using a single (Java) regex.

    Note that some regex languages / engines do support conditionals; see the Wikipedia Comparison of regular-expression engines page.

提交回复
热议问题