#asp.net #regex #visual-studio
#asp.net #регулярное выражение #visual-studio
Вопрос:
У меня это происходит сотни раз в нашем проекте (с одним пробелом с обеих сторон):
Eval("RandomDataName")
Я хочу заменить это на (с одним пробелом с обеих сторон):
H(Eval("RandomDataName"))
Прямо сейчас у меня есть,
Eval({.*})
И заменить на:
H(Eval(1))
Это работает, но не в строках, в которых есть несколько Eval, поскольку оно выбирает их все в одной строке. Как я могу это исправить? Я пробовал использовать .*? и это не работает.
Ответ №1:
Вам нужно быть более явным, текущее регулярное выражение слишком жадное.
Например, скажем, у вас есть это в строке.
Eval("Test") Eval("Another") Eval("Yet one more")
Ваше регулярное выражение будет соответствовать Eval(
и продолжится до самого последнего )
, фиксируя все промежуточное. Самый простой способ заставить это работать, вероятно, будет иметь «белый список» ожидаемых символов. Что-то вроде:
Eval([a-zA-Z0-9" ]*)
Это должно соответствовать Eval(
, затем соответствовать кавычкам, буквенно-цифровым символам и пробелам ноль или более раз и затем, наконец, соответствовать завершению )
каждого Eval()
оператора.
Я бы рекомендовал добавить несколько примеров Eval()
операторов в RegExr и протестировать некоторые регулярные выражения и посмотреть, что работает для вашего набора данных.
Комментарии:
1. Спасибо! Это было очень полезно.