Регулярное выражение для строки с максимальной длиной, которая содержит обязательную часть? - PullRequest
4 голосов
/ 03 декабря 2009

Я не совсем гуру регулярных выражений, поэтому мне сложно найти регулярное выражение для следующего случая.

Я бы хотел найти строку вида <prefix>$rolename$<suffix> (например, abc$rolename$def) максимальная длина - 20. И <prefix>, и <suffix> могут быть пустыми и содержать любой символ.Требуется часть $rolename$.

Не должно быть сложно, но я просто не могу понять, как это сделать.Кто-нибудь может мне помочь?

Ответы [ 3 ]

6 голосов
/ 03 декабря 2009

Поскольку вы должны использовать регулярное выражение, как вы объяснили, вот вариант:

^(?!.{21,})(.*?)\$rolename\$(.*?)$

Это похоже на ответ Иоахима, но с отрицательным взглядом в начале. То есть: перед сопоставлением регулярного выражения мы проверяем, что строка не содержит 21 или более символов.

1 голос
/ 03 декабря 2009

Регулярное выражение, которое я бы использовал, было бы /^([^\$]*)\$rolename\$([^\$]*)$/, проверяя общую длину строки извне.

0 голосов
/ 03 декабря 2009

почему регулярное выражение? думай просто. в зависимости от вашего языка проверьте длину, используя методы длины строки вашего языка, например, используя Python

if len(mystring) <= 20:
     if "$rolename" in mystring:
         print "ok"

ваш язык может иметь похожие методы, такие как index (), чтобы найти подстроку в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...